Pokud děláte pouze rovná se (a ne lajk, který může mít vliv na zkrat), jednoduše to nahraďte hodnotou:
EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';
Protože ve skutečnosti dotaz neprovádí, výsledky by se neměly lišit od skutečných. Jsou případy, kdy to není pravda (už jsem zmínil LIKE). Zde je příklad různých případů LIKE
:
SELECT * FROM a WHERE a.foo LIKE ?
- Parametr 1 ==
Foo
- Může použít skenování indexu, pokud index existuje. - Parametr 1 ==
%Foo
- Vyžaduje úplné prohledání tabulky, i když index existuje - Parametr 1 ==
Foo%
- Může použít skenování indexu v závislosti na mohutnosti indexu a dalších faktorech
Pokud se připojujete, a klauzule where vede k nemožné kombinaci (a tudíž dojde ke zkratu). Například:
SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?
Pokud jsou první a druhý parametr stejné, má jeden prováděcí plán, a pokud se liší, dojde ke zkratu (a vrátí 0 řádků, aniž by se zasáhla jakákoli data)...
Jsou i další, ale to je vše, na co teď z hlavy myslím...