MySQL limit 分頁查詢優化(百萬級優化)


1)簡單的查詢分頁;分每頁5條 limit [offset],[rows]

select t.* from t_topic t LIMIT 90000,10;

 

2)建立id索引;查詢索引id

select * from t_topic where id>=(select id from t_topic order by id limit 90000,1) limit 10;

 

3)使用 between and 語句分頁效率快N倍

SELECT * FROM t_topic WHERE id BETWEEN 90000 AND 90010;  

 

4)分表存儲;30萬條記錄的id存存儲到單獨的一個索引表t里面;先查找索引表t里面的id索引;然后再查詢

5)使用復合索引查詢數據

如果對於有where 條件,又想走索引用limit的,必須設計一個索引,將where 放第一位,limit用到的主鍵放第2位,而且只能select 主鍵!
完美解決了分頁問題了。可以快速返回id就有希望優化limit , 按這樣的邏輯,百萬級的limit 應該在0.0x秒就可以分完。

看來mysql 語句的優化和索引時非常重要的!

#先查詢索引id
select
id from t_topic limit 90000,10;
#然后在in()里面包含該id
SELECT * FROM t_topic WHERE id in (90001,90002,90003,90004,90005,90006,90007,90008,90009,90010);

通過簡單的變換,其實思路很簡單;通過優化索引,找出id,並拼成 “90001,90002,90003,90004,90005,90006,90007,90008,90009,90010″ 這樣的字符串;

查詢效率在百萬級別的數據不成問題。  

附圖:

 


免責聲明!

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



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