MySQL大數據量快速分頁實現


以下分享一點我的經驗

 

一般剛開始學SQL語句的時候,會這樣寫

 

代碼如下:

SELECT * FROM table ORDER BY id LIMIT 1000, 10;

但在數據達到百萬級的時候,這樣寫會慢死

 

代碼如下:

SELECT * FROM table ORDER BY id LIMIT 1000000, 10;

 

也許耗費幾十秒

 

網上很多優化的方法是這樣的


代碼如下:

SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10;

 

是的,速度提升到0.x秒了,看樣子還行了

可是,還不是完美的!

 

以下這句才是完美的!


代碼如下:

SELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010;

 

比上面那句,還要再快5至10倍

 

另外,如果需要查詢 id 不是連續的一段,最佳的方法就是先找出 id ,然后用 in 查詢


代碼如下:

SELECT * FROM table WHERE id IN(10000, 100000, 1000000...);

 

 

再分享一點

查詢字段一較長字符串的時候,表設計時要為該字段多加一個字段,如,存儲網址的字段

查詢的時候,不要直接查詢字符串,效率低下,應該查詢該字串的crc32或md5
---------------------
作者:Jef冒牌紳士
來源:CSDN
原文:https://blog.csdn.net/longjef/article/details/53929394
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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