Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ดึงข้อมูลจำนวนมากแบ่งชุด (Chunks) ใน MySQL


เพื่อดึงข้อมูลจำนวนมากแบ่งเป็นชุดๆ ใช้ ORDER BY ร่วมกับ LIMIT

รูปแบบไวยากรณ์

SELECT * FROM yourTableName ORDER BY yourColumnName LIMIT 0,10;

LIMIT offset, count โดย offset เริ่มจาก 0 (Zero-based) และ count คือจำนวนแถวสูงสุด

ชุดถัดไป (แถวที่ 11-30):

SELECT * FROM yourTableName ORDER BY yourColumnName LIMIT 10,20;

ชุดต่อไป (แถวที่ 31-50):

SELECT * FROM yourTableName ORDER BY yourColumnName LIMIT 30,20;

ใช้ Temporary Table สำหรับประสิทธิภาพ

DROP TEMPORARY TABLE IF EXISTS yourTempTableName; 
CREATE TEMPORARY TABLE yourTempTableName AS ( 
  SELECT * FROM yourOriginalTableName ORDER BY yourColumnName LIMIT 0,100 
);

จากนั้นดึงจาก Temporary Table:

SELECT * FROM yourTempTableName LIMIT 0,100; 
SELECT * FROM yourTempTableName LIMIT 100,1000;

สุดท้ายลบ Temporary Table:

DROP TEMPORARY TABLE yourTempTableName;

ตัวอย่างสมบูรณ์

สร้างตารางและเพิ่มข้อมูล 738 แถว แล้วสร้าง Temporary Table และดึงข้อมูลแบ่งชุด:

mysql> CREATE TEMPORARY TABLE TempRecord AS (SELECT * FROM getRecordsDemo ORDER BY Id LIMIT 0,738);

ชุดที่ 1 (10 แถวแรก):

mysql> SELECT * FROM TempRecord LIMIT 0,10;

ชุดที่ 2 (20 แถวถัดไป):

mysql> SELECT * FROM TempRecord LIMIT 10,20;

ชุดที่ 3 (20 แถวถัดไปอีก):

mysql> SELECT * FROM TempRecord LIMIT 30,20;

วิธีนี้เหมาะสำหรับการแบ่งหน้า (Pagination) หรือประมวลผลข้อมูลจำนวนมากแบบทีละชุด