हम्म, यहां एक आश्चर्यजनक परिणाम था। मेरे पास SQL सर्वर नहीं है, इसलिए मैंने पोस्टग्रेज़ में यह कोशिश की। स्पष्ट रूप से अस्वीकरण लागू होते हैं: यह आवश्यक परिणाम नहीं देगा, आपका लाभ भिन्न हो सकता है, उपयोग करने से पहले चिकित्सक से परामर्श लें। लेकिन फिर भी ...
मैं सिर्फ दो अलग अलग तरीकों में एक साधारण क्वेरी ने लिखा है:
select *
from foo
where (select code from bar where bar.barid=foo.barid) between 'A' and 'B'
और
select *
from foo
where (select code from bar where bar.barid=foo.barid)>='A'
and (select code from bar where bar.barid=foo.barid)<='B'
हैरानी की बात है मेरे लिए
, दोनों लगभग समान रन बार किया था। जब मैंने एक विस्तार योजना बनाई, तो उन्होंने समान परिणाम दिए। विशेष रूप से, पहली क्वेरी ने दो बार बार के खिलाफ लुकअप किया, एक बार> = परीक्षण के लिए और फिर < = परीक्षण के लिए, दूसरी क्वेरी की तरह।
निष्कर्ष: पोस्टग्रेज़ में, कम से कम, वास्तव में केवल सिंटैक्टिक चीनी है।
व्यक्तिगत रूप से, मैं इसे नियमित रूप से उपयोग करता हूं क्योंकि यह पाठक के लिए स्पष्ट है, खासकर यदि परीक्षण किया जा रहा मूल्य एक अभिव्यक्ति है। यह पता लगाना कि दो जटिल अभिव्यक्ति समान हैं, एक गैर-मामूली व्यायाम हो सकती है। यह पता लगाना कि दो जटिल अभिव्यक्ति समान होनी चाहिए, भले ही वे अधिक कठिन न हों।
मुझे यह भी पता नहीं था कि ऑपरेटर के बीच एक था। पहली बार यह देखकर कि यह 100% स्पष्ट नहीं था अगर बीच समावेशी या अनन्य होगा। मैंने सही अनुमान लगाया लेकिन चूंकि, जवाब कहते हैं कि कोई प्रदर्शन अंतर नहीं है, मैं इसे स्पष्ट करने के लिए दूसरे संस्करण के साथ चिपकेगा। हालांकि, मैं ऐसे व्यक्ति हूं जो ब्रांड्स जोड़ देंगे जहां उन्हें यह सुनिश्चित करने की आवश्यकता नहीं है कि कोई और गलतफहमी नहीं है जब कोई और मेरा कोड पढ़ता है। – drs9222