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