萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql limit 優化分頁查詢

mysql limit 優化分頁查詢

limit優化我們分享了非常多的方法,但是看到文章操作方法都一相,下面我介紹的主要是子查詢優化方法了,希望例子對各位有幫助。


最近做的一個網站谷歌站長工具提示sitemap訪問超時,這是為毛原因呢?之前不是好好的麼?進入mysql發現某個進程等待時間比較長,進一步發現原來是這樣分頁的mysql語句,因為文章比較多,而且是直接生成xml文件,全部籠統第調出所有文章aid,然後由php組和生成sitemap,我的分頁mysql,類似如下:

select id,title from collect limit 1000,10; 很快;基本上0.01秒就OK

select id,title from collect limit 90000,10; 從9萬條開始分頁,結果?

select aid from articles order by aid limit 80000,4000

當然,前面幾頁數據還挺快的,上了一二十頁後,等待的時間特別長。


最終優化如下:

select aid from  articles  where aid >=(select aid from articles order by aid limit 80000,1) order by  aid desc limit 4000

這樣一來,效率瞬間提高。有木有?必須得有阿。

最後做個小總結:直接用limit分頁查詢,在數據量較小的情況下那是相當給力,隨著翻頁到後面,效率瞬間下降,於是用上面第二句可解決問題。此兩句結合使用,將是天下無雙了吧。

補充:子查詢用了join來優化

select id , login_name , password from user join (select id from user order by login_name limit 200000 , 10) as user2 using(id);
用了0.5x秒

explain 上述

三次查詢

1,using index 的limit
2,沒看懂,可能是join的過程
3, 主鍵in查詢 10條,飛快

copyright © 萬盛學電腦網 all rights reserved