一般剛開始學SQL語句的時候,會這樣寫
代碼如下:
SELECT * FROM table ORDER BY id LIMIT 1000, 10;
但在數據達到百萬級的時候,這樣寫會慢死
代碼如下:
SELECT * FROM table ORDER BY id LIMIT 1000000, 10;
也許耗費幾十秒
網上很多優化的方法是這樣的
代碼如下:
SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10;
是的,速度提升到0.x秒了,看樣子還行了
可是,還不是完美的!
以下這句才是完美的!
代碼如下:
SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010;
比上面那句,還要再快5至10倍
另外,如果需要查詢 id 不是連續的一段,最佳的方法就是先找出 id ,然後用 in 查詢
代碼如下:
SELECT * FROM table WHERE id IN(10000, 100000, 1000000...);
來源:http://www.aichengxu.com/article/MySQL/1093_10.html