product (866,633 筆)SELECT * FROM product LIMIT 10, 20; -- 0.016 秒 SELECT * FROM product LIMIT 100, 20; -- 0.016 秒 SELECT * FROM product LIMIT 1000, 20; -- 0.047 秒 SELECT * FROM product LIMIT 10000, 20; -- 0.094 秒 SELECT * FROM product LIMIT 400000, 20; -- 3.229 秒 SELECT * FROM product LIMIT 866613, 20; -- 37.44 秒 (最後一頁)
結論:查詢時間與起始位置成正比,深分頁效能不可接受。
僅查詢主鍵 id (覆蓋索引):
SELECT id FROM product LIMIT 866613, 20; -- 0.2 秒 (提升 100+ 倍)
SELECT * FROM product WHERE id >= (SELECT id FROM product LIMIT 866613, 1) LIMIT 20; -- 0.2 秒
SELECT * FROM product a JOIN (SELECT id FROM product LIMIT 866613, 20) b ON a.id = b.id; -- 0.2 秒
實測證明:百萬級資料表深分頁,務必使用覆蓋索引定位主鍵再回表,可將查詢時間從秒級降至毫秒級。