Rumah >pangkalan data >tutorial mysql >Adakah Klausa WHERE SQL Menjamin Penilaian Litar Pintas?
SQL WHERE Klausa: Penilaian Litar Pintas – Mitos atau Realiti?
KlausaSQL WHERE
melibatkan penilaian ungkapan boolean. Persoalannya timbul: adakah ia menggunakan litar pintas, menghentikan penilaian apabila hasilnya pasti? Ini memberi kesan kepada pengoptimuman dan prestasi pertanyaan dengan ketara.
Litar Pintas: Dijamin atau Khusus Sistem?
Piawaian ANSI SQL 2003 menunjukkan susunan penilaian umum dari kiri ke kanan untuk ungkapan klausa WHERE
. Walau bagaimanapun, ia secara eksplisit menyatakan bahawa perintah penilaian sebenar adalah bergantung kepada pelaksanaan. Setiap Sistem Pengurusan Pangkalan Data (DBMS) mempunyai strategi pengoptimuman tersendiri untuk penilaian ungkapan boolean.
Gelagat Khusus DBMS
Sistem pangkalan data yang berbeza mengendalikan perkara ini secara berbeza:
Contoh Ilustrasi
Pertimbangkan WHERE
klausa 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. Piawaian ANSI menyerahkan penilaian syarat kedua (@key IS NOT NULL AND @key = t.Key
) kepada DBMS.
Kesimpulan: Kehadiran dan kelakuan litar pintas dalam klausa SQL WHERE
tidak diseragamkan. Bergantung padanya untuk ketepatan adalah berisiko. Pembangun mesti merujuk dokumentasi DBMS khusus mereka dan menjalankan ujian empirikal untuk menentukan tingkah laku penilaian sebenar.
Atas ialah kandungan terperinci Adakah Klausa WHERE SQL Menjamin Penilaian Litar Pintas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!