Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में बड़े SELECT परिणाम को खंडों (चंक्स) में कैसे प्राप्त करें?


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 ... सिंटैक्स भी समर्थित है।
  1. - MySQL टेबल पर केवल 3 क्रमबद्ध पंक्तियां कैसे चुनें?

    परिचय MySQL में ORDER BY क्लॉज के साथ LIMIT का उपयोग करके क्रमबद्ध परिणामों में से केवल निर्दिष्ट संख्या में पंक्तियां प्राप्त की जा सकती हैं। उदाहरण: टेबल बनाना और डेटा डालना ); Query OK, 0 rows affected (0.52 sec) INSERT INTO DemoTable1551(EmployeeName) VALUES(Adam); Query OK, 1 row affected (

  1. - MySQL में SHOW TABLES से डेटाबेस की सभी टेबल नाम देखें

    MySQL में SHOW TABLES स्टेटमेंट का उपयोग करके वर्तमान या निर्दिष्ट डेटाबेस की सभी टेबल नाम सूचीबद्ध कर सकते हैं। सिंटैक्स SHOW TABLES [FROM डेटाबेस_नाम]; उदाहरण 1. विशिष्ट डेटाबेस से टेबल सूची SHOW TABLES FROM hb_student_tracker; 2. परिणाम +------------------------------+ | Tables_in_hb_student

  1. - MySQL में महीने के अनुसार कुल राशि (SUM) कैसे प्राप्त करें?

    MySQL में MONTH() और YEAR() फ़ंक्शन के साथ GROUP BY का उपयोग करके महीने के अनुसार राशि का योग निकाला जा सकता है। उदाहरण खरीद तालिका बनाएं: mysql> CREATE TABLE DemoTable ( -> PurchaseDate DATE, -> Amount INT -> ); डेटा डालें: mysql> INSERT INTO DemoTable VALUES ->