Ini demonya menunjukkan urutan kondisi klausa WHERE bisa membuat perbedaan karena hubungan arus pendek. Ini menjalankan kueri berikut:
-- query #1
SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
-- query #2
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;
Satu-satunya perbedaan antara ini adalah urutan operan di OR
kondisi.
myslowfunction
sengaja tidur sebentar dan memiliki efek samping menambahkan entri ke tabel log setiap kali dijalankan. Berikut adalah hasil dari apa yang dicatat saat menjalankan dua kueri:
myslowfunction called for query #1 with value 1
myslowfunction called for query #1 with value 2
myslowfunction called for query #2 with value 1
myslowfunction called for query #2 with value 2
myslowfunction called for query #2 with value 3
myslowfunction called for query #2 with value 4
Di atas menunjukkan bahwa fungsi lambat dijalankan lebih sering ketika muncul di sisi kiri OR
kondisi ketika operan lain tidak selalu benar.
Jadi IMO jawaban untuk pertanyaannya:
adalah "Terkadang bisa."