Mysql分頁,資料量大時limit優化
阿新 • • 發佈:2018-12-12
MYSQL的優化是非常重要的。其他最常用也最需要優化的就是limit。mysql的limit給分頁帶來了極大的方便,但資料量一大的時候,limit的效能就急劇下降。
同樣是取10條資料
select * from order limit 10000,10
select * from order limit 0,10
查詢耗時就不是一個數量級別的。
優化方案:首先獲取到offset的id然後直接使用limit size來獲取資料
1、offset比較小的時候。
select * from order limit 10000,10
Select * From order Where vid >= (Select vid From order o2 By vid limit 10,1) limit 10
前者查詢時間在0.0004-0.0005之間,後者查詢時間在0.0005-0.0006之間
結論:偏移offset較小的時候,直接使用limit較優。這個顯然是子查詢的原因。
2、offset大的時候。
select * from order limit 10000,10
Select * From order Where vid >= (Select vid From order o2 By vid limit 10000,1) limit 10
前者查詢時間0.0187,後者查詢時間0.0061左右,後者比前者優數倍