Sangat jelas bahwa server MS Sql mendukung teori hubung singkat, untuk meningkatkan kinerja dengan menghindari pemeriksaan yang tidak perlu,
Contoh Pendukung:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
Di sini, contoh pertama akan menghasilkan kesalahan 'Konversi gagal saat mengubah nilai varchar' A 'ke int tipe data.'
Sedangkan yang kedua berjalan dengan mudah karena kondisi 1 = 1 dievaluasi ke TRUE dan dengan demikian kondisi kedua tidak berjalan sama sekali.
Lebih jauh lagi
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
di sini kondisi pertama akan dinilai false dan karenanya DBMS akan pergi untuk kondisi kedua dan sekali lagi Anda akan mendapatkan kesalahan konversi seperti pada contoh di atas.
CATATAN: SAYA MENULIS KONDISI KESALAHAN HANYA UNTUK MEWUJUDKAN CUACA KONDISI INI DILAKSANAKAN ATAU BERLINGKAR-SINGKAT JIKA HASIL HASIL DALAM KESALAHAN BERARTI KONDISI YANG DILAKSANAKAN, KONDISI DILAKUKAN DENGAN SINGKAT, SINGKAT-SINGKAT.
PENJELASAN SEDERHANA
Mempertimbangkan,
WHERE 1 = 1 OR 2 = 2
karena kondisi pertama sedang dievaluasi menjadi BENAR , tidak ada artinya untuk mengevaluasi kondisi kedua karena evaluasi dalam nilai apa pun tidak akan mempengaruhi hasil sama sekali, sehingga peluang yang baik bagi Sql Server untuk menghemat waktu Eksekusi Kueri dengan melewatkan pemeriksaan atau evaluasi kondisi yang tidak perlu .
dalam hal "ATAU" jika kondisi pertama dievaluasi ke TRUE seluruh rantai yang dihubungkan oleh "ATAU" akan dianggap dievaluasi dengan benar tanpa mengevaluasi yang lain.
condition1 OR condition2 OR ..... OR conditionN
jika kondisi1 dievaluasi menjadi benar, istirahatkan semua kondisi sampai kondisiN akan dilewati. Dengan kata-kata umum pada penentuan TRUE pertama , semua kondisi lain yang dihubungkan oleh OR akan dilewati.
Pertimbangkan kondisi kedua
WHERE 1 = 0 AND 1 = 1
karena kondisi pertama sedang dievaluasi ke FALSE dievaluasi tidak ada artinya untuk mengevaluasi kondisi kedua karena evaluasi dalam nilai apa pun tidak akan mempengaruhi hasilnya sama sekali, jadi sekali lagi kesempatan yang baik untuk Sql Server untuk menghemat waktu Eksekusi Query dengan melewatkan pemeriksaan atau evaluasi kondisi yang tidak perlu .
dalam kasus "DAN" jika kondisi pertama dievaluasi menjadi SALAH seluruh rantai yang terhubung dengan "DAN" akan dianggap sebagai dievaluasi ke SALAH tanpa mengevaluasi yang lain.
condition1 AND condition2 AND ..... conditionN
jika condition1 dievaluasi menjadi FALSE , istirahatkan semua kondisi sampai conditionN akan dilewati. Dengan kata-kata umum pada penentuan FALSE pertama , semua kondisi lain yang ditautkan oleh AND akan dilewati.
OLEH KARENA ITU, PROGRAMER BIJAK HARUS SELALU MEMPROGRAM RANTAI KONDISI SEPERTI YANG, KURANGNYA MURNI ATAU KONDISI YANG PALING MENGHAPUS DITERAPKAN PERTAMA, ATAU MENGATUR KETENTUAN DALAM SEPERTI YANG BISA DIBUTUHKAN.