MYSQL分頁查詢偏移量過大的優化方案


前提:

出現這種問題的原因是因為mysql在進行分頁的時候,並不知直接插rows的數據,而是把offset和rows的數據全部查出來,然后再將offset的數據扔掉,返回rows的數據;

第一種解決辦法:

symptom_id是主鍵,表里面221W數據

優化前####### 42s                     

select * from symptom ORDER BY create_date desc limit 2210000, 15   

 

 內連接優化后####### 7s

SELECT t1.* FROM symptom t1

INNER JOIN ( SELECT symptom_id FROM symptom ORDER BY create_date DESC LIMIT 2210000, 15 ) t2

ON t1.symptom_id = t2.symptom_id

 

7秒鍾的時間大多花費在排序字段上,在create_date上建立索引后總耗時 0.5s !!!!!!!!!!!!!

 

第二種解決辦法:

在業務允許的情況下限制頁數,可以看到百度和google都是這么做的;

第三種解決辦法:

如果id是連續自增的,可以用

select * from symptom where id > 1250000 limit 15

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM