Rumah >pangkalan data >tutorial mysql >Adakah Klausa SQL WHERE Menggunakan Penilaian Litar Pintas?
SQL WHERE Klausa dan Litar Pintas: Pandangan Lebih Dekat
KlausaSQL WHERE
menggunakan logik Boolean untuk menapis data berdasarkan kriteria yang ditentukan. Soalan utama mengenai ungkapan Boolean ini ialah sama ada sistem pangkalan data menggunakan penilaian litar pintas.
Penilaian litar pintas mengoptimumkan pemprosesan ungkapan Boolean dengan menghentikan penilaian sebaik sahaja keputusan akhir diketahui. Ini mengelakkan pengiraan yang tidak perlu, yang berpotensi meningkatkan prestasi.
Pertimbangkan contoh ini:
<code class="language-sql">SELECT * FROM Table t WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) </code>
Jika @key
ialah NULL
, syarat pertama (@key IS NULL
) adalah benar. Standard ANSI SQL Draf 2003 meninggalkan penilaian syarat kedua sebagai pelaksanaan-ditakrifkan. Walau bagaimanapun, sistem pangkalan data sering mengoptimumkan dengan melangkau penilaian berikutnya apabila hasilnya sudah ditentukan. Oleh itu, bahagian kedua mungkin tidak dinilai, tetapi ini tidak dijamin merentas semua sistem.
Kelakuan penilaian litar pintas dalam SQL WHERE
klausa berbeza mengikut sistem pangkalan data:
AND
dan OR
), tetapi bukan semua (&&
dan ||
). Tingkah laku boleh menjadi versi pangkalan data khusus.Potensi untuk litar pintas perlu dipertimbangkan semasa menulis pertanyaan SQL yang cekap, tetapi bergantung padanya untuk ketepatan biasanya tidak digalakkan kerana kekurangan gelagat yang konsisten merentas sistem pangkalan data yang berbeza.
Atas ialah kandungan terperinci Adakah Klausa SQL WHERE Menggunakan Penilaian Litar Pintas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!