今天研究了一下mysql的分頁查詢,記錄並分享如下:
方式1:
select * from table order by id limit m, n;
該語句的意思為,查詢m+n條記錄,去掉前m條,返回後n條記錄。無疑該查詢能夠實現分頁功能,但是如果m的值越大,查詢的效能會越低(越後面的頁數,查詢效能越低),因為mysql同樣需要掃瞄過m+n條記錄。
方式2:
select * from table where id > #max_id# order by id limit n;
方式3:
為了避免能夠實現方式2不能實現的查詢,就同樣需要使用到limit m, n子句,為了效能,就需要將m的值盡力的小,比如當前在第3頁,需要查詢第5頁,每頁10條資料,當前第3頁的最大id為#max_id#:
select * from table where id > #max_id# order by id limit 20, 10;
其實該查詢方式是部分解決了方式2的問題,但如果當前在第2頁,需要查詢第100頁或1000頁,效能仍然會較差。
方式4:
select * from table as a inner join (select id from table order by id limit m, n) as b on a.id = b.id order by a.id;
該查詢同方式1一樣,m的值可能很大,但由於內部的子查詢只掃瞄了字段id,而不是整張表,所以效能要強於方式1查詢,並且該查詢能夠解決方式2和方式3不能解決的問題。
方式5:
select * from table where id > (select id from table order by id limit m, 1) limit n;
該查詢方式同方式4,同樣通過子查詢掃瞄欄位id,效果同方式4。至於效能的話,方式5的效能會略好於方式4,因為方式5不需要在進行表的關聯,而是乙個簡單的比較。
Mysql 分頁查詢 快照 Mysql分頁查詢優化
select from orders history where type 8 limit 1000,10 該條語句將會從表 orders history 中查詢offset 1000開始之後的10條資料,也就是第1001條到第1010條資料 1001 id 1010 資料表中的記錄預設使用主鍵 一...
mysql 分頁查詢 失效 mysql分頁查詢
比如每頁10條,分頁查詢 語法 select from table limit offset,rows offset指定要返回的第一行的偏移量,rows第二個指定返回行的最大數目。初始行的偏移量是0 不是1 select from table limit 0,10 第一頁 select from t...
MySQL分頁查詢
在實際運用過程中,當我們需要對mysql資料庫中查詢的語句進行分頁處理時,通常使用的是limit方法。基礎語法為 select from table name limit page 1 num,num 分頁查詢table name表,page為頁數,num為每頁顯示的資料條數這個語句是最簡單的分頁查...