เพื่อดึงข้อมูลจำนวนมากแบ่งเป็นชุดๆ ใช้ 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) หรือประมวลผลข้อมูลจำนวนมากแบบทีละชุด