mysql分頁查詢的優(yōu)化

優(yōu)化LIMIT分頁

在系統(tǒng)中需要進行分頁才做的時候,我們通常會使用LIMIT加上偏移量的辦法實現(xiàn)罐氨。
比如:

explain select * from orders limit 10 offset 10 ;

一個非常常見又令人頭疼的問題就是,在偏移量非常大的時候(翻頁到非常靠后的頁面)堵未,例如可能是LIMIT 10000,10這樣的查詢,這時MySQL需要查詢10020條記錄然后只返回最后20條盏触,前面10000條記錄都被拋棄渗蟹,這樣的代價非常高。

那么如何優(yōu)化這類查詢呢?

第一步

首先對于這個查詢select id from orders;我們可以explain一下

explain select id from orders;

會發(fā)現(xiàn)這是一個索引掃描(在存在輔助索引的情況下)赞辩,相對表掃描這
個是會快很多的

第二步

基與上面的理論那么先將需要的id取出來 然后做一個子查詢

select * from orders WHERE id >= (select id from orders order by id limit 1 offset 10000) limit 10;

不過這個查詢是基于ID自增的假設雌芽,如果ID不是自增, 那么可以通過INNER JOIN 來改寫

select * from  orders INNER JOIN (select id from orders order by id LIMIT 10 offset 10000) t  USING (id);

補充

  • 分頁的顯示

    • 如果有獲取數(shù)據(jù)總數(shù) 那么通過總數(shù)自然可以得到頁數(shù)
      一般獲取數(shù)據(jù)總數(shù)是一個索引掃描,如果數(shù)據(jù)量很大在innodb下對于sql什么優(yōu)化的有段
    • 如果沒有總數(shù) 那么獲取的時候多獲取一些數(shù)據(jù), 比如每頁20個 我獲取21個 如果能取到自然有下一頁
  • 還是很慢怎么解決

    • 從業(yè)務考慮 是否真的需要這種翻頁辨嗽, 因為普通用戶的話很少會關心歷史數(shù)據(jù)
    • 可以考慮按時間段分表
    • 維護一根分頁表世落,這樣直接就可以獲得某也有多少數(shù)據(jù)
    • 交給其他工具去做,不讓mysql做自己不擅長的事情

總結

優(yōu)化此類分頁查詢的一個最簡單的辦法就是盡可能地使用索引覆蓋查詢糟需,而不是查詢所有的列屉佳。然后根據(jù)需要做一個關聯(lián)操作再返回所需的列谷朝。對于偏移量很大的時候,這樣做的效率會提升很大武花。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末圆凰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子体箕,更是在濱河造成了極大的恐慌专钉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件累铅,死亡現(xiàn)場離奇詭異跃须,居然都是意外死亡,警方通過查閱死者的電腦和手機争群,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門回怜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人换薄,你說我怎么就攤上這事玉雾。” “怎么了轻要?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵复旬,是天一觀的道長。 經(jīng)常有香客問我冲泥,道長驹碍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任凡恍,我火速辦了婚禮志秃,結果婚禮上,老公的妹妹穿的比我還像新娘嚼酝。我一直安慰自己浮还,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布闽巩。 她就那樣靜靜地躺著钧舌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涎跨。 梳的紋絲不亂的頭發(fā)上洼冻,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音隅很,去河邊找鬼撞牢。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的普泡。 我是一名探鬼主播播掷,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撼班!你這毒婦竟也來了歧匈?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤砰嘁,失蹤者是張志新(化名)和其女友劉穎件炉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矮湘,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡斟冕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缅阳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磕蛇。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖十办,靈堂內(nèi)的尸體忽然破棺而出秀撇,到底是詐尸還是另有隱情,我是刑警寧澤向族,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布呵燕,位于F島的核電站,受9級特大地震影響件相,放射性物質發(fā)生泄漏再扭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一夜矗、第九天 我趴在偏房一處隱蔽的房頂上張望泛范。 院中可真熱鬧,春花似錦紊撕、人聲如沸敦跌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至麸俘,卻和暖如春辩稽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背从媚。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工逞泄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓喷众,卻偏偏與公主長得像各谚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子到千,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 國慶第二天憔四,今天嗨翻模式的開啟就等室友的同學來了再說吧膀息,在這之前,先來一波筆記 查詢真正重要的是響應時間了赵,查詢包含...
    小煉君閱讀 1,698評論 0 50
  • 學習自: 數(shù)據(jù)庫開發(fā) 很多應用往往只展示最新或最熱門的幾條記錄潜支,但為了舊記錄仍然可訪問,所以就需要個分頁的導航欄柿汛。...
    wyatt_plus閱讀 518評論 1 2
  • 在mysql中l(wèi)imit可以實現(xiàn)快速分頁冗酿,但是如果數(shù)據(jù)到了幾百萬時我們的limit必須優(yōu)化才能有效的合理的實現(xiàn)分頁...
    bycall閱讀 4,019評論 0 5
  • “真的,還是姑娘你络断,做的飯好吃裁替。” 哈哈哈哈妓羊,吃到一半居然還噎住了胯究,哪有你說的那么好吃啊,我天天吃自己做的飯都要吃...
    流荊望楚閱讀 199評論 0 1
  • 我現(xiàn)在很煩躁躁绸,這種感覺我已經(jīng)很久沒有擁有過了裕循,就像在我的心中有一只螞蟻,它尋不到出路净刮,只能毫無章序的亂爬剥哑。...
    八寶_閱讀 299評論 0 2