प्रो टिप SELECT *
. से बचें या SELECT table.*
प्रदर्शन-संवेदनशील प्रश्नों में। इसके बजाय, नाम से उन स्तंभों का चयन करें जिनका आपको वास्तव में उपयोग करने की आवश्यकता है
प्रो टिप MySQL के पास GROUP BY
. के लिए एक कुख्यात गैर-मानक एक्सटेंशन है जिसका आप उपयोग कर रहे हैं, और संभवतः दुरुपयोग कर रहे हैं। इस पढ़ें। https://dev.mysql.com/doc /refman/8.0/hi/group-by-handling.html
यदि आप पहले प्रो टिप का पालन करते हैं, तो दूसरे का अनुसरण करना बहुत आसान होगा।
प्रो टिप अपने प्रश्नों में तेजी लाने की उम्मीद में बहुत सारे सिंगल कॉलम इंडेक्स "फेंकने" से बचें। इसके बजाय, अपनी वास्तविक क्वेरी की ज़रूरतों से मेल खाने वाले इंडेक्स, अक्सर कंपाउंड इंडेक्स बनाएं। इसे पढ़ें https://use-the-index-luke.com ।
प्रो टिप Using temporary; using filesort
EXPLAIN आउटपुट में दिखना जरूरी नहीं कि खराब हो। इसका सीधा सा मतलब है कि क्वेरी इंजन को इसे वापस करने से पहले आंशिक परिणाम सेट को कैश करना होगा। temporary
बात एक वास्तविक तालिका नहीं है, यह एक RAM संरचना है। यदि यह इतना बड़ा है तो यह RAM को स्वैप कर देता है, MySQL इसे डिस्क पर फैला देगा। लेकिन आपका नहीं है।
जो कुछ कहा जा रहा है, आइए आपकी क्वेरी को दोबारा दोहराएं। मुझे लगता है कि आप सबसे बड़ी idCartDATA
वाली पंक्तियों को पुनः प्राप्त करना चाहते हैं प्रत्येक CartSplitData.SUPPLIERID
. के लिए मान ।
तो चलिए इसे एक सबक्वेरी के रूप में लिखते हैं।
SELECT max(IDCartDATA) AS IDCartDATA, SUPPLIERID
FROM CartSplitData
GROUP BY SUPPLIERID
CartSplitData:(SUPPLIERID, IDCartDATA)
पर एक कंपाउंड इंडेक्स लगाकर इस क्वेरी को नाटकीय रूप से तेज किया जा सकता है। ।
इसके बाद, उस सबक्वेरी में आईडी से मेल खाने वाली पंक्तियों को खोजने के लिए अपनी मुख्य क्वेरी को फिर से लिखें।
SELECT CartData.* /* * hammers performance */
CartSplitData.* /* * hammers performance */
FROM CartData
JOIN CartSplitData ON CartSplitData.IDCartDATA = CartDATA.IDCartData
JOIN (
SELECT max(IDCartDATA) AS IDCartDATA, SUPPLIERID
FROM CartSplitData
GROUP BY SUPPLIERID
)x ON x.SUPPLIERID = CartSplitData.SUPPLIERID
AND x.IDCartData = CartSplitData.IDCartData
WHERE CartData.CartOrderref = 'XXXXXXXXX'
CartData.CartOrderref
. पर आपकी अनुक्रमणिका इस बाहरी क्वेरी में मदद करेगा, जैसा कि ^^^ बनाया गया कंपाउंड इंडेक्स होगा।