निम्न क्वेरी से (~ साथ 6k पंक्तियों 0.7 सेकंड) अपेक्षाकृत धीमी हैMySQL द्वारा/क्रम धीमा समूह
SELECT items.*, COUNT(transactions.ID)
FROM items
INNER JOIN users ON (items.USER = users.ID)
LEFT JOIN transactions ON (items.id = transactions.item)
WHERE items.ACTIVE = 1
AND items.DELETED_AT IS NULL
GROUP BY items.ID
ORDER BY items.DATE DESC
LIMIT 20
लेकिन जब items.ID DESC बजाय items.DATE द्वारा आदेश दिया नाटकीय रूप से गति। शामिल लेनदेन एक बड़ी मेज (~ 250k पंक्तियों) के लिए है और एक से कई है। दिनांक कॉलम में एक सूचकांक है।
क्या ORDER BY के प्रदर्शन को सामान्य रूप से सुधारने का कोई तरीका है?
संपादित करें: आइटम्स.user, accounts.item, और items.date पर अनुक्रमणिका। वस्तुओं में 49 कॉलम, उपयोगकर्ता 76 और लेनदेन 17.
क्या आप तीन तालिकाओं के लिए स्कीमा और विशेष रूप से इंडेक्स प्रदान कर सकते हैं? – TetonSig
एकमात्र चीज जिसे मैं सोच सकता हूं वह सबसे पहले आपके WHERE क्लॉज द्वारा फ़िल्टर किए गए आइटमों का चयन कर रहा है और उपशीर्षक में दिनांक के अनुसार आदेश दिया गया है, (या एक दृश्य में, यदि MySQL subqueries में ORDER द्वारा समर्थित नहीं है) और फिर एक संलग्न क्वेरी में आपका जुड़ता है (मैं इसे एक उत्तर के रूप में नहीं लिख रहा हूं क्योंकि एस सट्टा जवाबों को हतोत्साहित करता है।) –
क्या आपने 'GROUP BY' में 'आइटम्स.डेट' को शामिल करने का प्रयास किया है (पहली स्थिति में भी)? –