Rumah >pangkalan data >tutorial mysql >Adakah Susunan Syarat dalam MySQL WHERE Klausa Memberi Impak Prestasi Pertanyaan?

Adakah Susunan Syarat dalam MySQL WHERE Klausa Memberi Impak Prestasi Pertanyaan?

Linda Hamilton
Linda Hamiltonasal
2024-12-23 22:16:20657semak imbas

Does the Order of Conditions in a MySQL WHERE Clause Impact Query Performance?

Tertib Syarat dalam MySQL WHERE Klausa dan Prestasi

Apabila mencipta pertanyaan pangkalan data yang kompleks dengan banyak syarat, susunan syarat tersebut berpotensi memberi kesan Prestasi MySQL. Senario biasa melibatkan gabungan keadaan yang luas dan terhad. Timbul persoalan: adakah penting jika syarat sekatan muncul dahulu atau terakhir dalam klausa WHERE?

Jawapannya tidak selalunya mudah. Dalam situasi tertentu, susunan boleh menjejaskan prestasi disebabkan oleh tingkah laku litar pintas. Pertimbangkan pertanyaan berikut:

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
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) 

Dalam pertanyaan pertama, keadaan syarikat disemak terakhir, yang berpotensi menyebabkan MySQL mencari melalui sejumlah besar baris sebelum mengecilkan keputusan. Dalam pertanyaan kedua, keadaan syarikat dinilai terlebih dahulu, yang boleh mengurangkan bilangan baris yang perlu diproses dengan ketara.

Pengoptimuman ini berlaku kerana MySQL menggunakan logik litar pintas dalam menilai klausa WHERE. Jika syarat syarikat gagal untuk baris tertentu, MySQL tidak akan meneruskan untuk menilai syarat yang tinggal untuk baris tersebut.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa manfaat prestasi ini mungkin tidak selalunya penting, terutamanya jika syarat terhad tidak sangat selektif (iaitu, ia tidak menghapuskan sebilangan besar baris).

Oleh itu, manakala susunan syarat dalam klausa WHERE kadangkala boleh menjejaskan prestasi MySQL, ia bukan peraturan umum yang boleh digunakan dalam semua kes. Adalah lebih baik untuk menjalankan ujian prestasi pada pertanyaan khusus untuk menentukan sama ada menyusun semula syarat memberikan sebarang peningkatan yang ketara.

Atas ialah kandungan terperinci Adakah Susunan Syarat dalam MySQL WHERE Klausa Memberi Impak Prestasi Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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