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

Bagaimanakah Pesanan Keadaan Klausa WHERE Mempengaruhi Prestasi Pertanyaan MySQL?

Barbara Streisand
Barbara Streisandasal
2024-12-24 09:24:13229semak imbas

How Does WHERE Clause Condition Ordering Impact MySQL Query Performance?

Where Clause Condition Ordering dan MySQL Performance

Dalam senario di mana pertanyaan mengandungi banyak syarat dan syarat tertentu mengecilkan set hasil dengan ketara, susunan syarat dalam klausa WHERE boleh memberi kesan kepada prestasi MySQL.

Pertimbangkan perkara berikut senario:

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, syarat yang menapis berdasarkan medan syarikat diletakkan pada permulaan klausa WHERE. Keadaan ini secara berkesan mengecilkan bilangan baris yang perlu dinilai untuk keadaan seterusnya.

Dalam pertanyaan kedua, susunan syarat diterbalikkan. Keadaan yang menapis berdasarkan medan syarikat dinilai selepas syarat lain.

Bergantung pada pengedaran data, susunan syarat boleh menjejaskan prestasi. Dengan meletakkan syarat yang mengurangkan keputusan yang ditetapkan dengan ketara pada permulaan klausa WHERE, MySQL boleh menggunakannya lebih awal dan mengelak daripada menilai syarat berikutnya untuk baris yang tidak memenuhi syarat tersebut.

Pengoptimuman ini dikenali sebagai "short -litar." Jika keadaan pada mulanya menilai kepada palsu untuk baris tertentu, MySQL akan segera membuang baris tersebut tanpa menilai syarat yang selebihnya.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pengoptimuman ini tidak selalu digunakan. Jika semua keadaan mempunyai selektiviti yang sama, susunan keadaan mungkin tidak mempunyai kesan yang ketara pada prestasi.

Untuk menentukan susunan keadaan optimum, pertimbangkan faktor berikut:

  • Selektiviti setiap syarat
  • Pengagihan data
  • Pelan pelaksanaan pertanyaan dan pemasaan

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!

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