Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menjelaskan kueri dengan parameter di MySQL

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 ?
  1. Param 1 ==Foo - Dapat menggunakan pemindaian indeks jika ada indeks.
  2. Param 1 ==%Foo - Memerlukan pemindaian tabel lengkap, meskipun ada indeks
  3. 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...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah hasil kueri sql ke tabel pivot menggunakan array php?

  2. Kesalahan MySQL - #1062 - Entri duplikat ' ' untuk kunci 2

  3. Render Tabel dengan cara yang salah:transpos Kolom dan Baris?

  4. Bagaimana cara memeriksa apakah koneksi C# — MySQL saya berhasil atau, jika tidak, kembalikan mengapa?

  5. Replikasi MySQL:untuk sementara mencegah pernyataan SQL tertentu mereplikasi ke budak?