मेरे पास SELECT
कथन है जिसे मैं अनुकूलित करना चाहता हूं। mysql - order by optimization कहता है कि कुछ मामलों में सूचकांक का उपयोग ORDER BY
को अनुकूलित करने के लिए नहीं किया जा सकता है। विशेष रूप से बिंदु:क्या ऑप्टिमाइज़ेशन द्वारा ऑर्डर निम्नलिखित SELECT कथन में प्रभावी होता है?
आप t1 कहां कुंजी 2 = निरंतर आदेश से एक प्रमुख
चुनें * की nonconsecutive भागों पर आदेश BY का उपयोग key_part2 द्वारा;
मुझे सोचता है, यह मामला हो सकता है। मैं निम्नलिखित अनुक्रमित उपयोग कर रहा हूँ:
UNIQUE KEY `met_value_index1` (`RTU_NB`,`DATETIME`,`MP_NB`),
KEY `met_value_index` (`DATETIME`,`RTU_NB`)
निम्नलिखित एसक्यूएल बयान के साथ:
SELECT * FROM met_value
WHERE rtu_nb=constant
AND mp_nb=constant
AND datetime BETWEEN constant AND constant
ORDER BY mp_nb, datetime
- यह काफी सूचकांक
met_value_index1
हटाना होगा और नया आदेश देनेRTU_NB
,MP_NB
,DATETIME
साथ इसे बनाने? - क्या मुझे RTU_NB को
ORDER BY
खंड में शामिल करना है?
परिणाम: मैं कोशिश की है क्या @meriton सुझाव दिया और सूचकांक
met_value_index2
गयी।
SELECT
1.2 सेकंड के बाद पूरा हुआ, पहले यह 5.06 सेकंड के बाद पूरा हुआ। निम्नलिखित प्रश्नों से संबंधित नहीं है लेकिन एक साइड नोट के रूप में: कुछ अन्य प्रयासों के बाद मैंने इंजन को माइस्सम से इनो डीबी में स्विच किया -
rtu_nb, mp_nb, datetime
प्राथमिक कुंजी के रूप में - और बयान 0.13 सेकंड के बाद पूरा हुआ!
आपके स्पष्टीकरण और सुझाव के लिए धन्यवाद। मैं इसे आज़माउंगा और जल्द से जल्द परिणामों की रिपोर्ट करूंगा - वर्तमान में रिमोट मशीन बंद है - और मैं उत्सुक हूं, क्या बदलेगा। –