10

次の式を取ります。FALSE AND (expression)

MySQLは式を評価しますか、それとも認識されたらすぐに先に進みFALSEますか?

いくつかの背景コンテキスト-次のようにしてクエリを高速化したかったのです。

JOIN... ON (indexed_column1=indexed_column2 AND non_indexed_column_a=non_indexed_column_b)

このクエリを実行する理由の背景については、この回答を参照してください

それが常に評価されるのであれば、non_indexed_column_a=non_indexed_column_bそれで時間を節約することはできません。

4

1 に答える 1

3

MySQLクエリオプティマイザは、可能な限りインデックスを使用し、可能な限り多くの行を削除するために最も制限の厳しいインデックスを使用します。

したがって、クエリの場合、常に最初のインデックス列に基づいてレコードをフィルタリングし、次に非インデックス列からレコードをフィルタリングします。

また、クエリを実行する前に、MySQLは常にfalseになるコード(デッドコード)を削除します。

詳細については、http://www.informit.com/articles/article.aspx?p = 377652&seqNum= 2を参照してください。

于 2012-09-05T07:27:55.183 に答える