首頁  >  文章  >  資料庫  >  百萬數據下mysql分頁問題

百萬數據下mysql分頁問題

藏色散人
藏色散人轉載
2019-04-17 17:23:343728瀏覽

在開發過程中我們常會使用分頁,核心技術是使用limit進行資料的讀取。在使用limit進行分頁的測試過程中,得到以下資料:

select * from news order by id desc limit 0,10
耗时0.003秒
select * from news order by id desc limit 10000,10
耗时0.058秒
select * from news order by id desc limit 100000,10 
耗时0.575秒
select * from news order by id desc limit 1000000,10
耗时7.28秒

我們驚訝的發現mysql在資料量大的情況下分頁起點越大查詢速度越慢,100萬條起的查詢速度已經需要7秒鐘。這是我們無法接受的數值!

改進方案 1

select * from news 
where id >  (select id from news order by id desc  limit 1000000, 1)
order by id desc 
limit 0,10

查詢時間 0.365秒,提升效率是非常明顯的! !原理是什麼呢? ? ?

我們使用條件對id進行了篩選,在子查詢(select id from news order by id desc limit 1000000, 1) 中我們只查詢了id這一個字段比起select * 或select 多個字段節省了大量的查詢開銷!

改進方案2

適合id連續的系統,速度極快!

select * from news 
where id  between 1000000 and 1000010 
order by id desc

不適合有條件的、id不連續的查詢。速度非常快!

以上是百萬數據下mysql分頁問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:hcoder.net。如有侵權,請聯絡admin@php.cn刪除