Rumah > pangkalan data > tutorial mysql > Bagaimanakah Pesanan Keadaan Klausa WHERE Mempengaruhi Prestasi Pertanyaan MySQL?

Bagaimanakah Pesanan Keadaan Klausa WHERE Mempengaruhi Prestasi Pertanyaan MySQL?

Patricia Arquette
Lepaskan: 2024-12-29 12:31:14
asal
883 orang telah melayarinya

How Does WHERE Clause Condition Ordering Affect MySQL Query Performance?

Kesan Susunan Keadaan Klausa WHERE terhadap Prestasi MySQL

Apabila mencipta pertanyaan kompleks dengan berbilang syarat, susunan syarat tersebut berpotensi mempengaruhi prestasi MySQL. Keadaan tertentu, seperti penapisan mengikut ID syarikat, boleh mengurangkan bilangan baris yang diperiksa dengan ketara.

Soalan:

Pertimbangkan dua pertanyaan berikut dengan susunan keadaan yang berbeza:

Pertanyaan 1:

SELECT * FROM clients WHERE 
       (firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND 
       (firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar) AND 
       company = :ugh
Salin selepas log masuk

Pertanyaan 2:

 SELECT * FROM clients WHERE 
       company = :ugh AND
       (firstname LIKE :foo OR lastname LIKE :foo OR phone LIKE :foo) AND 
       (firstname LIKE :bar OR lastname LIKE :bar OR phone LIKE :bar) 
Salin selepas log masuk

Adakah susunan syarat ini memberi kesan kepada kecekapan MySQL?

Jawapan:

Tertib keadaan klausa WHERE sememangnya boleh menjejaskan Prestasi MySQL dalam keadaan tertentu. Pertimbangkan contoh berikut:

Pertanyaan 3:

SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
Salin selepas log masuk

Pertanyaan 4:

SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;
Salin selepas log masuk

Satu-satunya perbezaan antara pertanyaan ini ialah susunan operan dalam keadaan OR . "myslowfunction" ialah fungsi yang sengaja melambatkan seketika. Pelaksanaan pertanyaan mendedahkan bahawa:

  • Pertanyaan 3: myslowfunction dipanggil empat kali (nilai myint 1, 2, 3, 4).
  • Query 4: myslowfunction dipanggil tujuh kali ( nilai myint 1, 2, 3, 4, 5, 6, 7).

Ini menunjukkan bahawa apabila fungsi perlahan muncul di sebelah kiri keadaan OR dengan operan yang tidak selalu benar, fungsi tersebut dilaksanakan dengan lebih kerap.

Kesimpulan:

Ringkasnya, susunan syarat dalam klausa WHERE boleh mempengaruhi prestasi MySQL disebabkan oleh litar pintas. Untuk mengoptimumkan prestasi, letakkan keadaan yang dijangka dapat mengurangkan bilangan baris yang diperiksa dengan ketara (mis., ID syarikat) seawal mungkin dalam rantaian keadaan.

Atas ialah kandungan terperinci Bagaimanakah Pesanan Keadaan Klausa WHERE Mempengaruhi Prestasi Pertanyaan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan