Zolang je alleen een gelijk aan doet (en niet een like, die kortsluitingseffecten kan hebben), vervang je deze gewoon door een waarde:
EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';
Aangezien de query niet daadwerkelijk wordt uitgevoerd, mogen de resultaten niet verschillen van de werkelijke. Er zijn enkele gevallen waarin dit niet waar is (ik noemde al LIKE). Hier is een voorbeeld van de verschillende gevallen van LIKE
:
SELECT * FROM a WHERE a.foo LIKE ?
- Param 1 ==
Foo
- Kan een indexscan gebruiken als er een index bestaat. - Param 1 ==
%Foo
- Vereist een volledige tabelscan, zelfs als er een index bestaat - Param 1 ==
Foo%
- Kan een indexscan gebruiken, afhankelijk van de kardinaliteit van de index en andere factoren
Als je meedoet, en de waar-clausule leidt tot een onmogelijke combinatie (en dus kortsluiting). Bijvoorbeeld:
SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?
Als de eerste en tweede parameters hetzelfde zijn, heeft het één uitvoeringsplan, en als ze verschillend zijn, zal het kortsluiten (en 0 rijen retourneren zonder gegevens te raken)...
Er zijn er nog meer, maar dat is alles wat ik nu uit mijn hoofd kan bedenken...