LIMIT और OFFSET का उपयोग करें (पेजिनेशन)
बड़े परिणाम सेट को खंडों में प्राप्त करने के लिए ORDER BY ... LIMIT offset, count का उपयोग करें।
बुनियादी सिंटैक्स
-- पहले 10 पंक्तियाँ (0 से शुरू) SELECT * FROM yourTableName ORDER BY yourColumnName LIMIT 0, 10; -- अगली 20 पंक्तियाँ (11 से 30) SELECT * FROM yourTableName ORDER BY yourColumnName LIMIT 10, 20; -- अगली 20 पंक्तियाँ (31 से 50) SELECT * FROM yourTableName ORDER BY yourColumnName LIMIT 30, 20;
LIMIT offset, row_count में:
offset— छोड़ने वाली पंक्तियों की संख्या (0-आधारित)।row_count— लौटाने वाली अधिकतम पंक्तियाँ।
बड़े डेटासेट के लिए अस्थायी टेबल दृष्टिकोण
यदि मूल टेबल बहुत बड़ी है और बार-बार पेजिनेशन धीमा है, तो एक अस्थायी टेबल बनाएं:
-- मौजूदा अस्थायी टेबल हटाएं DROP TEMPORARY TABLE IF EXISTS yourTempTableName; -- क्रमबद्ध डेटा के साथ अस्थायी टेबल बनाएं CREATE TEMPORARY TABLE yourTempTableName AS (SELECT * FROM yourOriginalTableName ORDER BY yourColumnName LIMIT 0, 1000); -- अब अस्थायी टेबल से खंडों में पढ़ें SELECT * FROM yourTempTableName LIMIT 0, 100; SELECT * FROM yourTempTableName LIMIT 100, 1000; -- अंत में अस्थायी टेबल हटाएं DROP TEMPORARY TABLE yourTempTableName;
व्यावहारिक प्रदर्शन
टेबल बनाना और 738 रिकॉर्ड डालना
mysql> CREATE TABLE getRecordsDemo (
Id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Id)
);
mysql> INSERT INTO getRecordsDemo VALUES(),()... (738 पंक्तियाँ);
अस्थायी टेबल बनाना
mysql> DROP TEMPORARY TABLE IF EXISTS TempRecord; mysql> CREATE TEMPORARY TABLE TempRecord AS (SELECT * FROM getRecordsDemo ORDER BY Id LIMIT 0, 738);
खंड 1: पहली 10 पंक्तियाँ
mysql> SELECT * FROM TempRecord LIMIT 0, 10;
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +----+
खंड 2: अगली 20 पंक्तियाँ (11-30)
mysql> SELECT * FROM TempRecord LIMIT 10, 20;
+----+ | Id | +----+ | 11 | ... | 30 | +----+
खंड 3: अगली 20 पंक्तियाँ (31-50)
mysql> SELECT * FROM TempRecord LIMIT 30, 20;
+----+ | Id | +----+ | 31 | ... | 50 | +----+
सर्वोत्तम अभ्यास
- हमेशा
ORDER BYका उपयोग करें ताकि परिणाम क्रमबद्ध और पूर्वानुमानित हों। - बहुत बड़े ऑफसेट (
LIMIT 1000000, 10) से बचें; प्रदर्शन गिरता है। - अस्थायी टेबल सेशन-विशिष्ट होती हैं और सेशन समाप्त होने पर स्वचालित रूप से हट जाती हैं।
- MySQL 8.0+ में
LIMIT ... OFFSET ...सिंटैक्स भी समर्थित है।