首頁 > 資料庫 > mysql教程 > 百萬數據下mysql分頁問題

百萬數據下mysql分頁問題

藏色散人
發布: 2019-04-17 17:23:34
轉載
3821 人瀏覽過

在開發過程中我們常會使用分頁,核心技術是使用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中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
thinkphp3.2.3怎麼實現mysql的拆分
來自於 1970-01-01 08:00:00
0
0
0
mysql的分支版本和衍生版本
來自於 1970-01-01 08:00:00
0
0
0
依照ID對MySQL結果進行分組以便循環遍歷
來自於 1970-01-01 08:00:00
0
0
0
如何分佈 MySQL 輸出中的重複行?
來自於 1970-01-01 08:00:00
0
0
0
Mysql分區報錯,另外小說訂閱表如何優化?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板