यह निर्भर करता है..सामान्य तौर पर, Oracle इस बात की गारंटी नहीं देता है कि SQL कथन शॉर्ट-सर्किट मूल्यांकन का उपयोग करेगा (हालाँकि PL/SQL को शॉर्ट-सर्किट मूल्यांकन करने की गारंटी है)। Oracle ऑप्टिमाइज़र विधेय का मूल्यांकन करने के लिए स्वतंत्र है, जिस क्रम में वह सबसे अधिक कुशल होने की अपेक्षा करता है। इसका मतलब यह हो सकता है कि पहले विधेय का मूल्यांकन पहले किया जाता है और केवल मेल खाने वाली पंक्तियों का ही दूसरे विधेय का मूल्यांकन किया जाता है, लेकिन यह पूरी तरह से संभव है कि या तो विपरीत होता है या Oracle क्वेरी को एक प्रकार के UNION
में बदल देता है। और परिणामों को संयोजित करने से पहले दोनों विधेय का पूरी तरह से मूल्यांकन करता है।
कहा जा रहा है, यदि अनुकूलक संकलन समय पर निर्धारित कर सकता है कि एक विधेय हमेशा TRUE
का मूल्यांकन करेगा या FALSE
, अनुकूलक को बस इसे स्थिर के रूप में मानना चाहिए। इसलिए यदि, उदाहरण के लिए, टेबल पर कोई बाधा है जो X
. को रोकता है हमेशा 'सत्य' का मान होने से, ऑप्टिमाइज़र को दूसरे विधेय का बिल्कुल भी मूल्यांकन नहीं करना चाहिए (हालाँकि ऑप्टिमाइज़र के विभिन्न संस्करणों में यह पता लगाने की अलग-अलग क्षमताएँ होंगी कि कुछ संकलन समय पर स्थिर है)।
जहां तक आपके प्रश्न के दूसरे भाग का प्रश्न है, प्रश्न योजनाओं को देखे बिना, यह बताना बहुत कठिन है। ओरेकल ऑप्टिमाइज़र प्रश्नों को एक रूप से दूसरे रूप में बदलने में बहुत अच्छा होता है यदि इसका मूल्यांकन करने के अधिक कुशल तरीके हैं। सामान्य तौर पर, हालांकि, अगर subQ
table
. की तुलना में अपेक्षाकृत बड़ी संख्या में पंक्तियों को वापस करने जा रहा है , क्वेरी को EXISTS
. के रूप में संरचित करना अधिक कुशल हो सकता है बजाय एक IN
. के रूप में ।