分頁查詢優化limit的方法和原理

2022-02-05 09:22:12 字數 750 閱讀 2972

一、背景

直接從資料庫查詢所有資料,耗時、耗記憶體,改為分頁查詢部分資料

二、常規分頁查詢 

1.  mysql: limit 從第m條資料開始,查詢n條資料

select * from table limit m,n 

2. sql server: top+子查詢

3. 原理:從資料庫的第一條記錄開始掃瞄

a. 越往後,即m越大,查詢越慢

b. 查詢的資料越多,即n越大,查詢越慢

三、優化方式

1. 使用子查詢進行優化,先查出乙個id,再根據id進行limit,查出資料

2. 根據id做限定進行優化,把id作為where的條件

3. 使用臨時表進行優化,先查出所有id,再試用in查出資料

select * from table where id in (select id from table limit m,n)

四、優化原理

1. select * from table limit m,n 的查詢過程

a. 查詢到索引葉子節點資料

b. 根據葉子節點上的主鍵值,去聚集索引,查詢需要的全部字段值

2. 優化後

參考:

Limit分頁查詢效能優化

1.語法 limit offset,rows 一般是用於select語句中用以從結果集中拿出特定的一部分資料。offset是偏移量,表示我們現在需要的資料是跳過多少行資料之後的,可以忽略 rows表示我們現在要拿多少行資料。2.栗子 select from mytbl limit 10000,100...

limit分頁優化

對於有大資料量的mysql表來說,使用limit分頁存在很嚴重的效能問題。查詢從第1000000之後的30條記錄 sql 1 平均用時6.6秒 select from cdb posts order by pid limit 1000000 30 sql 2 平均用時0.6秒 select from...

Limit分頁優化

1.直接用limit start,count分頁語句,也是我程式中用的方法 select from product limit start,count 當起始頁較小時,查詢沒有效能問題,我們分別看下從10,100,1000,10000開始分頁的執行時間 每頁取20條 如下 select from p...