Rumah >pangkalan data >tutorial mysql >Adakah Susunan Syarat dalam MySQL WHERE Klausa Memberi Impak Prestasi Pertanyaan?
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!