Rumah >pangkalan data >tutorial mysql >Adakah SQL Menjamin Penilaian Litar Pintas dalam Klausa WHERE?

Adakah SQL Menjamin Penilaian Litar Pintas dalam Klausa WHERE?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-21 02:24:14588semak imbas

Does SQL Guarantee Short-Circuit Evaluation in WHERE Clauses?

SQL WHERE Penilaian Klausa: Diterangkan Litar Pintas

Soalan lazim mengenai klausa WHERE SQL berkenaan dengan penilaian ungkapan boolean: adakah SQL menggunakan penilaian litar pintas? Ini bermakna penilaian dihentikan sebaik sahaja keputusannya pasti, berpotensi memintas bahagian akhir ungkapan.

Piawaian dan Perintah Penilaian ANSI SQL

Piawaian ANSI SQL tidak mentakrifkan penilaian litar pintas secara eksplisit untuk fasal WHERE. ANSI SQL Draf 2003 menentukan bahawa susunan penilaian ungkapan adalah bergantung kepada pelaksanaan. Ini meninggalkan keputusan sama ada untuk melaksanakan litar pintas kepada vendor pangkalan data individu atau tidak.

Pelaksanaan Khusus Pangkalan Data

Oleh itu, tingkah laku litar pintas berbeza dengan ketara merentas sistem pangkalan data:

  • SQL Server: Menyokong penilaian litar pintas untuk pengendali AND dan OR.
  • Oracle: Tidak menyokong penilaian litar pintas secara lalai, walaupun ia boleh didayakan menggunakan petunjuk OPTIMIZER_MODE.
  • MySQL: Menyokong penilaian litar pintas untuk pengendali AND sahaja.

Contoh Ilustrasi

Pertimbangkan pertanyaan 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) ialah TRUE. Dalam SQL Server, penilaian litar pintas akan melangkau syarat kedua (@key IS NOT NULL AND @key = t.Key), kerana keputusan keseluruhan sudah diketahui.

Pengambilan Utama

Piawaian ANSI SQL tidak menjamin penilaian litar pintas dalam fasal WHERE. Kehadiran dan tingkah lakunya adalah khusus pangkalan data. Sentiasa rujuk dokumentasi sistem pangkalan data anda untuk memahami strategi penilaiannya.

Atas ialah kandungan terperinci Adakah SQL Menjamin Penilaian Litar Pintas dalam Klausa WHERE?. 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