MySQL में MAX() vs ORDER BY DESC LIMIT 1: प्रदर्शन तुलना
कॉलम का अधिकतम मान प्राप्त करने के दो सामान्य तरीके हैं, लेकिन MAX() फंक्शन ORDER BY ... DESC LIMIT 1 से काफी तेज होता है।
दोनों तरीके
CREATE TABLE DemoTable (Number INT); INSERT INTO DemoTable VALUES (78), (87), (89), (69), (87);
MAX() क्वेरी
SELECT MAX(Number) FROM DemoTable;
परिणाम: 89 (0.06 सेकंड)
क्यों MAX() तेज है?
| पहलू | MAX() | ORDER BY DESC LIMIT 1 |
|---|---|---|
| काम | इंडेक्स के अंतिम मान को सीधे पढ़ता है | सभी मान पढ़ता है, सॉर्ट करता है, फिर पहला लेता है |
| जटिलता (इंडेक्स पर) | O(1) या O(log n) | O(n log n) सॉर्ट के कारण |
| इंडेक्स उपयोग | इंडेक्स-ओनली स्कैन | फाइलसॉर्ट या इंडेक्स स्कैन |
कब ORDER BY उपयोगी है?
- अधिकतम मान वाली पूरी पंक्ति चाहिए:
SELECT * FROM t ORDER BY col DESC LIMIT 1 - एकाधिक कॉलम द्वारा सॉर्ट करके टाई-ब्रेक करना हो
- कोई इंडेक्स नहीं है (दोनों फुल स्कैन करेंगे)
सर्वोत्तम अभ्यास
- केवल अधिकतम मान चाहिए →
MAX(col) - अधिकतम मान वाली पंक्ति चाहिए →
ORDER BY col DESC LIMIT 1 - कॉलम पर इंडेक्स बनाएं:
CREATE INDEX idx_col ON table(col)