2010-04-22 17 views
7

इन दो बयानों तार्किक बराबर हैं:ऑपरेटर बनाम> = और <=: क्या कोई प्रदर्शन अंतर है?

SELECT * FROM table WHERE someColumn BETWEEN 1 AND 100 

SELECT * FROM table WHERE someColumn >= 1 AND someColumn <= 100 

वहाँ एक अन्य बनाम करने के लिए एक संभावित प्रदर्शन लाभ है?

+1

मुझे यह भी पता नहीं था कि ऑपरेटर के बीच एक था। पहली बार यह देखकर कि यह 100% स्पष्ट नहीं था अगर बीच समावेशी या अनन्य होगा। मैंने सही अनुमान लगाया लेकिन चूंकि, जवाब कहते हैं कि कोई प्रदर्शन अंतर नहीं है, मैं इसे स्पष्ट करने के लिए दूसरे संस्करण के साथ चिपकेगा। हालांकि, मैं ऐसे व्यक्ति हूं जो ब्रांड्स जोड़ देंगे जहां उन्हें यह सुनिश्चित करने की आवश्यकता नहीं है कि कोई और गलतफहमी नहीं है जब कोई और मेरा कोड पढ़ता है। – drs9222

उत्तर

4

कोई लाभ नहीं, केवल एक वाक्यविन्यास चीनी।

BETWEEN संस्करण का उपयोग करके, आप कुछ मामलों में फ़ंक्शन पुनर्मूल्यांकन से बच सकते हैं।

1

नहीं, कोई प्रदर्शन लाभ नहीं है। यह सिर्फ थोड़ी कैंडी है।

आप की तरह

DECLARE @Table TABLE(
     ID INT 
) 

SELECT * 
FROM @Table 
WHERE ID >= 1 AND ID <= 100 

SELECT * 
FROM @Table 
WHERE ID BETWEEN 1 AND 100 

एक प्रश्न तुलना कुछ की जाँच करें, और कार्य योजना लागू करके जांच करने के लिए थे, तो तुम नोटिस चाहिए कि यह बिल्कुल वैसा ही है।

1

कोई प्रदर्शन लाभ नहीं है, पहले पढ़ने/लिखना आसान है।

1

हम्म, यहां एक आश्चर्यजनक परिणाम था। मेरे पास 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' 
हैरानी की बात है मेरे लिए

, दोनों लगभग समान रन बार किया था। जब मैंने एक विस्तार योजना बनाई, तो उन्होंने समान परिणाम दिए। विशेष रूप से, पहली क्वेरी ने दो बार बार के खिलाफ लुकअप किया, एक बार> = परीक्षण के लिए और फिर < = परीक्षण के लिए, दूसरी क्वेरी की तरह।

निष्कर्ष: पोस्टग्रेज़ में, कम से कम, वास्तव में केवल सिंटैक्टिक चीनी है।

व्यक्तिगत रूप से, मैं इसे नियमित रूप से उपयोग करता हूं क्योंकि यह पाठक के लिए स्पष्ट है, खासकर यदि परीक्षण किया जा रहा मूल्य एक अभिव्यक्ति है। यह पता लगाना कि दो जटिल अभिव्यक्ति समान हैं, एक गैर-मामूली व्यायाम हो सकती है। यह पता लगाना कि दो जटिल अभिव्यक्ति समान होनी चाहिए, भले ही वे अधिक कठिन न हों।

संबंधित मुद्दे