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

Apakah urutan kondisi dalam klausa WHERE memengaruhi kinerja MySQL?

Ini demonya menunjukkan urutan kondisi klausa WHERE bisa membuat perbedaan karena hubungan arus pendek. Ini menjalankan kueri berikut:

-- query #1
SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;

-- query #2
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;

Satu-satunya perbedaan antara ini adalah urutan operan di OR kondisi.

myslowfunction sengaja tidur sebentar dan memiliki efek samping menambahkan entri ke tabel log setiap kali dijalankan. Berikut adalah hasil dari apa yang dicatat saat menjalankan dua kueri:

myslowfunction called for query #1 with value 1
myslowfunction called for query #1 with value 2
myslowfunction called for query #2 with value 1
myslowfunction called for query #2 with value 2
myslowfunction called for query #2 with value 3
myslowfunction called for query #2 with value 4

Di atas menunjukkan bahwa fungsi lambat dijalankan lebih sering ketika muncul di sisi kiri OR kondisi ketika operan lain tidak selalu benar.

Jadi IMO jawaban untuk pertanyaannya:

adalah "Terkadang bisa."



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Salin massal DataTable ke MySQL (mirip dengan System.Data.SqlClient.SqlBulkCopy)

  2. PHP &MySQL membandingkan kata sandi

  3. Node.js terhubung melalui ssh

  4. Kelompokkan berdasarkan tanggal hanya pada kolom Datetime

  5. Kueri LEFT OUTER JOIN tidak mengembalikan baris yang diharapkan