0

LEFT JOIN何も結合しないでa を呼び出した場合のクエリ ペナルティがどうなるか知りたいです。

私は2つのテーブルを持っています: mainhas .ID.typeand .infoadditionalhas.ID.more_info

私はこのクエリを実行しています:

SELECT main.*, additional.* FROM main LEFT JOIN additional ON main.ID = additional.ID

70% の確率で、追加情報を持たないmain.typeをクエリすることになることは十分承知しています。エントリはありませんが、制限により、常に LEFT JOIN ステートメントを含める必要があります。additional

これにより、どのくらいのクエリ ペナルティ (時間) が発生しますか?

EG は:

SELECT * FROM main WHERE type = 'no additional'

以下よりも大幅に高速になります。

SELECT main.*, additional.* FROM main LEFT JOIN additional ON main.ID = additional.ID WHERE main.type = 'no additional'?

4

1 に答える 1

0

ベンチマークしてみませんか?一致を取得しないことに対するペナルティはありません。MySQL は、結合されたフィールド REGARDLESS のインデックスをスキャンして、一致があるかどうかを確認する必要があります。

どちらかといえば、結合結果を取得することは実際にはペナルティです。現在、MySQL は結果を戻すためにテーブル ファイルを掘り下げる必要があるからです。

于 2013-02-16T23:53:46.467 に答える