limit 還記得嗎?
select * from table limit 5,10; #返回第6-15行資料
select * from table limit 5; #返回前5行
select * from table limit 0,5; #返回前5行
我們來寫分頁
物理分頁
select * from table limit (當前頁-1)*每頁顯示條數,每頁顯示條數;
-- 傳統方式
select * from table limit 90001,100;
-- 等價於
select * from table where id>=(
select max(id) from (
select id from table order by id limit 90001
) as tmp
) limit 100;
-- 改造方式
select * from table where id>=(
select max(id) from (
select id from table order by id limit 90000,1
) as tmp
) limit 100;
同樣是取90000條後100條記錄,傳統方式還是改造方式?
傳統方式是先取了前90001條記錄,取其中最大乙個id值作為起始標識,然後利用它可以快速定位下100條記錄
改造方式是僅僅取90000條記錄後1條,然後取id值作起始標識定位下100條記錄
傳統方式執行結果.100 rows in set (0.23) sec
改造方式執行結果.100 rows in set (0.19) sec
-- 改造方式->簡寫方式
select * from table where id>=(
select id from table order by id limit 90000,1
) limit 100;
mysql分頁limit 優化
mysql的分頁比較簡單,只需要limit offset,length就可以獲取資料了,但是當offset和length比較大的時候,mysql明顯效能下降 1.子查詢優化法 先找出第一條資料,然後大於等於這條資料的id就是要獲取的數 缺點 資料必須是連續的,可以說不能有where條件,where條...
Mysql分頁LIMIT分析
表結構 select id from table limit 2,4 返回結果 3,4,5,6 select id from table limit 3,4 返回結果 4,5,6,7 select id from table limit 3,5 返回結果 4,5,6,7,8 由以上結果可分析得到論 ...
MySql分頁limit 優化
mysql的分頁比較簡單,只需要limit offset,length就可以獲取資料了,但是當offset比較大的時候,mysql明顯效能下降 1.子查詢優化法 mysql set profiling 1 query ok,0 rows affected 0.00 sec mysql select ...