mysql分頁優化方法
今天遇到開發反應分頁語句很慢,馬上看一下到底是啥的分頁語句
原分頁語句
select * from `tt` limit 4863000, 1000
執行這個語句需要6秒+時間
執行計畫為全表掃瞄
在網上看到葉金榮對分頁優化的文章,於是把語句修改為inner join的方式
分頁改為inner join的方式
修改後的語句
修改之後只用了1.6秒
執行計畫
修改之後的語句其實本質沒有變還是掃瞄表得到4863000這個錨點之後的資料,但是仔細觀察你會發現實際上子查詢裡面
只查詢id這一列,因為表本身有乙個最窄索引ind_rsyncs,這個索引只有乙個列rsyncs,利用這個最窄索引掃瞄到4863000之後的id值
id是主鍵,然後子表和主表做join,join條件是id,雖然本質沒有變,但是相比改寫前的語句大大節省了io,所以查詢速度有了質的提公升
select id from `tt` limit 4863000, 1000
mysql分頁概念 MySQL 分頁
分頁的基本原理 mysql explain select from message order by id desc limit 10000,20 1.row id 1 select type table message type index possible keys null key prima...
mysql分頁er 構建高效的MySQL分頁
mysql分頁的主要目的就是提公升效率,今天我們將簡單介紹如何構建高效mysql分頁。首先看一下分頁的基本原理 limit 10000,20的意思掃瞄滿足條件的10020行,扔掉前面的10000行,返回最後的20行,問題就在這裡,如果是limit 100000,100,需要掃瞄100100行,在乙個...
mysql巢狀分頁 MySQL分頁優化
最近,幫同事重寫了乙個mysql sql語句,該sql語句涉及兩張表,其中一張表是字典表 需返回乙個字段 另一張表是業務表 本身就有150個字段,需全部返回 當然,欄位的個數是否合理在這裡不予評價。平時,返回的資料大概5w左右,系統尚能收到資料。但12月31日那天,資料量大概20w,導致sql執行時...