Mysql 分頁查詢優化

2021-07-25 15:58:09 字數 990 閱讀 3096

###分頁查詢優化

分頁查詢在 mysql 中常遇到,如以下語句

select * from tablename limit 100,20;
用時大約需要0.03 sec。用時很短。

但是隨著偏移量的增加,查詢時間也隨之增加。比如如下**:

select * from tablename limit 10000000,20
用時大約需要32.43 sec,這個時間是不是就有點長了了?可以優化嗎?答案是可以的。那麼,該怎樣優化?

select * from tablename order

by id limit 10000000,20;

用時大約需要17.71 sec,還是有點長。

select * from tablename where id >= (select id from tablename order

by id limit 10000000,1) limit 20;

用時大約需要4.01 sec。

from tablename where status=1 order by

id limit 10000000,10) b where a.id=b.id

用時大約需要4.43sec。

select * from tablename as a inner

join (select id from tablename order

by id limit 10000000,20) as b on a.id=b.id order

by a.id;

用時大約需要3.98sec。

可見優化方法2、優化方法3 和 優化方法4 執行時間差不多,相比於32.43 sec,效率提高八倍左右。

注:sql 語句中的 tablename指代的工作中乙個有40000000多萬記錄的表。

mysql 分頁優化 Mysql 查詢分頁優化

全表掃瞄,速度極慢 limit 語句的查詢時間與起始記錄的位置成正比 mysql 的 limit 語句是很方便,但是對記錄很多的表並不適合直接使用 建立測試表 drop table if exists t user create table test t user id int 10 unsigne...

MySQL分頁查詢優化

當需要從資料庫查詢的表有上萬條記錄的時候,一次性查詢所有結果會變得很慢,特別是隨著資料量的增加特別明顯,這時需要使用分頁查詢。對於資料庫分頁查詢,也有很多種方法和優化的點。下面簡單說一下我知道的一些方法。為了對下面列舉的一些優化進行測試,下面針對已有的一張表進行說明。三次查詢時間分別為 一般的分頁查...

MySQL分頁查詢優化

當需要從資料庫查詢的表有上萬條記錄的時候,一次性查詢所有結果會變得很慢,特別是隨著資料量的增加特別明顯,這時需要使用分頁查詢。對於資料庫分頁查詢,也有很多種方法和優化的點。下面簡單說一下我知道的一些方法。為了對下面列舉的一些優化進行測試,下面針對已有的一張表進行說明。三次查詢時間分別為 一般的分頁查...