イコールのみを実行している限り(短絡に影響を与える可能性のあるライクではない)、値に置き換えるだけです:
EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';
実際にはクエリを実行していないため、結果は実際と変わらないはずです。これが当てはまらない場合があります(すでにLIKEについて説明しました)。 LIKE
のさまざまなケースの例を次に示します。 :
SELECT * FROM a WHERE a.foo LIKE ?
- Param 1 ==
Foo
-インデックスが存在する場合は、インデックススキャンを使用できます。 - Param 1 ==
%Foo
-インデックスが存在する場合でも、全表スキャンが必要です - Param 1 ==
Foo%
-インデックスのカーディナリティやその他の要因に応じて、インデックススキャンを使用する場合があります
参加している場合、where句は不可能な組み合わせになります(したがって、短絡します)。例:
SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?
1番目と2番目のパラメーターが同じである場合、実行プランは1つであり、それらが異なる場合、短絡します(そして、データにヒットせずに0行を返します)...
他にもありますが、今私が考えることができるのはそれだけです...