आपने रेंज स्कैन और between
के बारे में क्या सुना है MySQL में बस सच नहीं है। यहां दस्तावेज़ीकरण
का एक उद्धरण दिया गया है :
तो, एक सूचकांक का उपयोग आश्चर्यजनक नहीं है। इस डेटा के लिए सबसे अच्छी अनुक्रमणिका start, end
. पर एक संयुक्त अनुक्रमणिका होगी ।
आपकी समस्या यह है कि आपके पास दो कॉलम हैं start
और end
. यह क्वेरी को थोड़ा और जटिल बना देता है।
निम्नलिखित कुछ परिस्थितियों में start
. पर एक इंडेक्स के साथ बेहतर प्रदर्शन कर सकते हैं और end
. पर एक अलग अनुक्रमणिका और पंक्तियों पर प्राथमिक कुंजी:
select gt.*
from (SELECT * FROM autumn4.ip WHERE :number >= start) gt join
(SELECT * FROM autumn4.ip WHERE :number <= end) lt
on gt.PRIMARYKEY = lt.PRIMARYKEY;