Selama Anda hanya melakukan persamaan (dan bukan sejenisnya, yang dapat berdampak korsleting), cukup ganti dengan nilai:
EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';
Karena itu tidak benar-benar menjalankan kueri, hasilnya tidak boleh berbeda dari yang sebenarnya. Ada beberapa kasus di mana ini tidak benar (saya sudah menyebutkan LIKE). Berikut adalah contoh kasus yang berbeda dari LIKE
:
SELECT * FROM a WHERE a.foo LIKE ?
- Param 1 ==
Foo
- Dapat menggunakan pemindaian indeks jika ada indeks. - Param 1 ==
%Foo
- Memerlukan pemindaian tabel lengkap, meskipun ada indeks - Param 1 ==
Foo%
- Dapat menggunakan pemindaian indeks, tergantung pada kardinalitas indeks dan faktor lainnya
Jika Anda bergabung, dan klausa where menghasilkan kombinasi yang tidak mungkin (dan karenanya akan terjadi hubungan pendek). Misalnya:
SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?
Jika parameter pertama dan kedua sama, ia memiliki satu rencana eksekusi, dan jika berbeda, ia akan korsleting (dan mengembalikan 0 baris tanpa mengenai data apa pun)...
Ada yang lain, tapi hanya itu yang bisa saya pikirkan saat ini...