मेरे पास एक MySQL तालिका है:क्या MySQL आदेश के साथ एक रेंज QUERY में इंडेक्स का उपयोग कर सकते हैं?
CREATE TABLE mytable (
id INT NOT NULL AUTO_INCREMENT,
other_id INT NOT NULL,
expiration_datetime DATETIME,
score INT,
PRIMARY KEY (id)
)
मुझे इस रूप में क्वेरी चलाने की आवश्यकता है:
SELECT * FROM mytable
WHERE other_id=1 AND expiration_datetime > NOW()
ORDER BY score LIMIT 10
अगर मैं इस अनुक्रमणिका को mytable में जोड़ता हूं:
CREATE INDEX order_by_index
ON mytable (other_id, expiration_datetime, score);
क्या MySQL सक्षम होगा ऊपर दिए गए प्रश्न में पूरे order_by_index
का उपयोग करने के लिए?
ऐसा लगता है कि यह करने में सक्षम होना चाहिए, लेकिन फिर MySQL के documentation के अनुसार: " इंडेक्स का भी उपयोग किया जा सकता है भले ही ऑर्डर बीई इंडेक्स से मेल नहीं खाता है, जब तक कि सभी अप्रयुक्त हिस्सों सूचकांक और कॉलम द्वारा सभी अतिरिक्त आदेश WHERE खंड में स्थिरांक हैं। "
उपर्युक्त मार्ग यह सुझाव देता है कि सूचकांक केवल एक निरंतर क्वेरी में उपयोग किया जाएगा जबकि मेरा एक सीमा प्रश्न है।
क्या कोई इस बात में स्पष्टीकरण दे सकता है कि इस मामले में इंडेक्स का उपयोग किया जाएगा? यदि नहीं, तो मैं किसी भी तरह से सूचकांक के उपयोग को मजबूर कर सकता हूं?
धन्यवाद।
>> यह द्वारा क्योंकि आप एक निरंतर करने के लिए expiration_datetime की तुलना नहीं कर रहे हैं आदेश के लिए सूचकांक का उपयोग नहीं कर सकते हैं। << मुझे लगता है कि यहां एक गलती है। हालांकि आपने उत्तर के दूसरे भाग में इसका कारण स्पष्ट रूप से समझाया था। – kellogs