MYSQL分頁limit速度太慢有什么優(yōu)化方法
我們使用電腦和手機時候最不能忍受就是設(shè)備又卡又慢了,嚴重影響我們工作或者游戲體驗。在mysql中l(wèi)imit可以實現(xiàn)快速分頁,但是如果數(shù)據(jù)到了幾百萬時我們的limit必須優(yōu)化才能有效的合理的實現(xiàn)分頁了,否則可能卡死你的服務(wù)器哦。這篇文章主要介紹了MYSQL分頁limit速度太慢的優(yōu)化方法,需要的朋友可以參考下
方法步驟
當一個表數(shù)據(jù)有幾百萬的數(shù)據(jù)的時候成了問題!
如 * from table limit 0,10 這個沒有問題 當 limit 200000,10 的時候數(shù)據(jù)讀取就很慢,可以按照一下方法解決
第一頁會很快
PERCONA PERFORMANCE CONFERENCE 2009上,來自雅虎的幾位工程師帶來了一篇”EfficientPagination Using MySQL”的報告
limit10000,20的意思掃描滿足條件的10020行,扔掉前面的10000行,返回最后的20行,問題就在這里。
LIMIT 451350 , 30 掃描了45萬多行,怪不得慢的都堵死了。
但是
limit 30 這樣的語句僅僅掃描30行。
那么如果我們之前記錄了最大ID,就可以在這里做文章
舉個例子
日常分頁SQL語句
select id,name,content from users order by id asc limit 100000,20
掃描100020行
如果記錄了上次的最大ID
select id,name,content from users where id>100073 order by id asc limit 20
掃描20行。
總數(shù)據(jù)有500萬左右
以下例子 當時候 select * from wl_tagindex where byname='f' order by id limit 300000,10 執(zhí)行時間是 3.21s
優(yōu)化后:
select * from (
select id from wl_tagindex
where byname='f' order by id limit 300000,10
) a
left join wl_tagindex b on a.id=b.id
執(zhí)行時間為 0.11s 速度明顯提升
這里需要說明的是 我這里用到的字段是 byname ,id 需要把這兩個字段做復合索引,否則的話效果提升不明顯
補充:解決系統(tǒng)變慢的常用技巧方法
1、在我的電腦窗口,右擊要清理的盤符―“屬性”―“清理磁盤”--勾選要刪除的文件--確定--是。
2、右鍵瀏覽器e――屬性――點2個刪除1個清除(都要逐一確定)――確定 。
3、把C:\WINDOWS\Prefetch(預(yù)讀文件)把里面的文件全部刪除
4、用優(yōu)化大師或超級兔子清理注冊表和垃圾文件。
5、“開始”――運行中輸入msconfig――確定――啟動――除了輸入法ctfmon以外的勾全去掉。
6、右鍵我的電腦”――屬性――點高級――點啟動和故障恢復中的設(shè)置――去掉所有的勾――寫入調(diào)試信息選擇“無”――確定――點高級下面錯誤報告――點禁用――2次確定。
7、“開始”..打開控制面板中的文件夾選項..點查看..點去末項自動搜索文件夾前面的勾..確定。
8、右鍵我的電腦――屬性――硬件――設(shè)備管理器――雙擊IDE控制器――次要通道――高級設(shè)置――傳送模式都選DMA――設(shè)備類型選無――確定――主要通道也同樣設(shè)置――確定。
9、右鍵C盤進行磁盤清理和其它選項中的系統(tǒng)還原清理。
10、刪除不用的程序軟件。
limit速度太慢有什么優(yōu)化方法相關(guān)文章: