Докато правите само равно (а не харесвате, което може да има късо съединение), просто го заменете със стойност:
EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';
Тъй като действително не изпълнява заявката, резултатите не трябва да се различават от действителните. Има някои случаи, в които това не е вярно (вече споменах LIKE). Ето пример за различните случаи на LIKE
:
SELECT * FROM a WHERE a.foo LIKE ?
- Параметр 1 ==
Foo
- Може да използва индексно сканиране, ако индекс съществува. - Параметр 1 ==
%Foo
- Изисква пълно сканиране на таблицата, дори ако съществува индекс - Параметр 1 ==
Foo%
- Може да използва индексно сканиране в зависимост от кардиналността на индекса и други фактори
Ако се присъединявате и клаузата където се отстъпва на невъзможна комбинация (и следователно ще се получи късо съединение). Например:
SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?
Ако първият и вторият параметър са еднакви, той има един план за изпълнение, а ако са различни, ще има късо съединение (и ще върне 0 реда, без да удря никакви данни)...
Има и други, но това е всичко, за което се сещам в момента...