MySQL的limit分頁查詢的效能分析及優化

2022-03-30 10:04:37 字數 962 閱讀 1960

select * from table_a limit m,n;

limit 子句可以被用於強制 select 語句返回指定的記錄數。limit 接受乙個或兩個數字引數。引數必須是乙個整數常量。如果給定兩個引數,第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1): 為了與 postgresql 相容,mysql 也支援句法: limit # offset #。

為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:

select * from table limit 95,-1; //

檢索記錄行 96-last.

mysql的 limit m,n 工作原理就是先讀取符合where條件的前面m+n條記錄,然後拋棄前m條,返回後面n條,所以m越大,偏移量越大,效能就越差。

優化思想:避免資料量大時掃瞄過多的記錄

版本一、子查詢的分頁方式:

select * from table where  id >=(select id from table  where category_id = 123 order by id limit 10000, 1) limit 10

版本二、join分頁方式

select *from `table` as t1   

join (select id from `table` order by id desc limit

".($page-1)*$pagesize.

", 1

) as t2

where t1.id

<= t2.id order by t1.id desc limit $pagesize;

以上優化思路的前提是表中必須存在乙個字段有序且唯一

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 ...