यदि आप किसी विशेष वर्ष (जैसे 2000) के लिए रिकॉर्ड फ़िल्टर करना चाहते हैं तो WHERE
इस तरह से क्लॉज़ को अनुकूलित करें:
SELECT MONTH(date_column), COUNT(*)
FROM date_table
WHERE date_column >= '2000-01-01' AND date_column < '2001-01-01'
GROUP BY MONTH(date_column)
-- average 0.016 sec.
के बजाय:
WHERE YEAR(date_column) = 2000
-- average 0.132 sec.
परिणाम तालिका स्तंभ पर 300k पंक्तियों और अनुक्रमणिका वाले तालिका के विरुद्ध उत्पन्न हुए थे।
के रूप में GROUP BY
खंड, मैंने कहा तालिका के ऊपर के खिलाफ तीन वेरिएंट परीक्षण किया; यहाँ परिणाम हैं:
SELECT YEAR(date_column), MONTH(date_column), COUNT(*)
FROM date_table
GROUP BY YEAR(date_column), MONTH(date_column)
-- codelogic
-- average 0.250 sec.
SELECT YEAR(date_column), MONTH(date_column), COUNT(*)
FROM date_table
GROUP BY DATE_FORMAT(date_column, '%Y%m')
-- Andriy M
-- average 0.468 sec.
SELECT YEAR(date_column), MONTH(date_column), COUNT(*)
FROM date_table
GROUP BY EXTRACT(YEAR_MONTH FROM date_column)
-- fu-chi
-- average 0.203 sec.
आखिरी वाला विजेता है।
GROUP BY record_date.MONTH
आपके पहले कोड स्निपेट में होना चाहिए था?