MySQL क्वेरी निष्पादन क्रम: ORDER BY पहले, फिर LIMIT
निष्पादन क्रम:
FROM/JOINWHEREGROUP BYHAVINGSELECTORDER BYLIMIT
निष्कर्ष: ORDER BY पहले निष्पादित होता है, फिर LIMIT परिणाम सेट को सीमित करता है।
व्यावहारिक प्रमाण
1. टेबल बनाएं:
mysql> CREATE TABLE LimitAfterOrderBy (Id INT, Name VARCHAR(100)); Query OK, 0 rows affected (0.50 sec)
2. डेटा डालें:
mysql> INSERT INTO LimitAfterOrderBy VALUES(101,'John'); mysql> INSERT INTO LimitAfterOrderBy VALUES(102,'Carol'); mysql> INSERT INTO LimitAfterOrderBy VALUES(103,'Bob'); mysql> INSERT INTO LimitAfterOrderBy VALUES(104,'Sam');
3. मूल डेटा (इन्सर्ट क्रम):
+------+-------+ | Id | Name | +------+-------+ | 101 | John | | 102 | Carol | | 103 | Bob | | 104 | Sam | +------+-------+ 4 rows in set (0.00 sec)
4. ORDER BY Name फिर LIMIT 4:
mysql> SELECT * FROM LimitAfterOrderBy ORDER BY Name LIMIT 4;
+------+-------+ | Id | Name | +------+-------+ | 103 | Bob | | 102 | Carol | | 101 | John | | 104 | Sam | +------+-------+ 4 rows in set (0.00 sec)
परिणाम नाम के अनुसार वर्णमाला क्रम में सॉर्टेड हैं, फिर LIMIT 4 लागू हुआ (सभी 4 पंक्तियां क्योंकि कुल 4 हैं)।
व्यावहारिक निहितार्थ:
पैजिनेशन (OFFSET + LIMIT):
-- पेज 1 (पहले 10) SELECT * FROM table ORDER BY created_at DESC LIMIT 10 OFFSET 0; -- पेज 2 (अगले 10) SELECT * FROM table ORDER BY created_at DESC LIMIT 10 OFFSET 10;
TOP-N क्वेरी:
-- शीर्ष 5 सबसे महंगे उत्पाद SELECT * FROM products ORDER BY price DESC LIMIT 5;
प्रदर्शन टिप:
ORDER BYकॉलम पर इंडेक्सLIMITके साथ बहुत तेज होता है (इंडेक्स स्कैन + जल्दी रुकना)ORDER BY RAND() LIMIT 1बड़ी टेबल पर धीमा — विकल्प उपयोग करेंLIMITबिनाORDER BYके अनिश्चित क्रम देता है
संबंधित: LIMIT ऑफसेट सिंटैक्स:
LIMIT offset, row_count -- पुराना सिंटैक्स LIMIT row_count OFFSET offset -- मानक SQL (MySQL 8.0+)