欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL深分頁問題四種方案小結(jié)

 更新時(shí)間:2024年11月04日 11:32:25   作者:北i  
在數(shù)據(jù)量大時(shí),深分頁查詢速度緩慢,主要原因是多次回表查詢,優(yōu)化方法主要介紹了四種,各方法適用于不同場(chǎng)景,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下

mysql深分頁問題:
這個(gè)問題在實(shí)際項(xiàng)目中很常見,當(dāng)數(shù)據(jù)量大以后,分頁會(huì)非常的慢(幾年前做過一個(gè)調(diào)度日志的分頁查詢,簡直沒法用)

深分頁為什么慢

 前言:N個(gè)條件為索引,id為主鍵
平常分頁一般也是用的PageHelper插件,最終SQL就大致長這個(gè)樣:

select id,name from table_name where N個(gè)條件 limit 100000,10;

它的執(zhí)行流程:

  • 先去二級(jí)索引過濾數(shù)據(jù),然后找到主鍵ID
  • 通過ID回表查詢數(shù)據(jù),取出需要的列
  • 掃描滿足條件的100010,丟棄前面100000條,返回

這里很明顯的不足就是,明明只需要拿10條,確多回表了100000次

優(yōu)化

1. 通過子查詢優(yōu)化

優(yōu)化回表次數(shù)

select id,name FROM table_name t1 where id >= (select id from table_name where update_time >= '2024-04-01 23:59:59' limit 100000, 1) AND update_time >= '2024-04-01 23:59:59' LIMIT 10;

流程:根據(jù)條件在二級(jí)索引進(jìn)行匹配,得出結(jié)果ID后,外層查詢?cè)俑鶕?jù)結(jié)果ID向后查10個(gè)即可

2. 通過 INNER JOIN 優(yōu)化

優(yōu)化回表次數(shù)

SELECT t1.id,t1.name FROM table_name t1 INNER JOIN (SELECT t2.id FROM table_name t2 WHERE t2.update_time >= '2024-04-01 23:59:59' ORDER BY t2.update_time LIMIT 100000, 10) AS t3 on t1.id= t3.id;

上面兩種方式其核心點(diǎn)都是 優(yōu)化回表次數(shù) 這個(gè)角度去進(jìn)行優(yōu)化,但是掃描的行卻并沒有減少,下面有兩種是從減少掃描行入手的方式,不過都有一定限制

3. 標(biāo)簽記錄法

記錄上次查詢的最大ID,再請(qǐng)求下一頁的時(shí)候

select id,name FROM table_name where id > 100000 order by id limit 10;

4. between...and...

select  id,name FROM table_name where id between 100000 and 100010 order by id;

局限性:依賴于連續(xù)自增的字段(如果不連續(xù),可以order by 一下 )

補(bǔ)充

是否可帶條件適用場(chǎng)景
子查詢后臺(tái)系統(tǒng)多條件分頁
INNER JOIN后臺(tái)系統(tǒng)多條件分頁
標(biāo)簽記錄法滑動(dòng)分頁(如app商品列表、新聞資訊列表)
between...and...滑動(dòng)分頁

之前在項(xiàng)目后臺(tái)管理系統(tǒng)中采用的 標(biāo)簽記錄法,根據(jù)條件快速定位到ID,然后再次根據(jù)條件向后掃描指定行數(shù),前端也一并改造,禁止輸入頁數(shù),僅允許點(diǎn)擊下一頁上一頁[既然都出現(xiàn)深分頁問題了,那業(yè)務(wù)也不需要支持使用者隨意跳頁,因?yàn)闆]有任何意義,他要跳到八千五百三十一頁看什么呢?]

到此這篇關(guān)于MySQL深分頁問題四種方案小結(jié)的文章就介紹到這了,更多相關(guān)MySQL深分頁內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入解析MySQL的窗口函數(shù)

    深入解析MySQL的窗口函數(shù)

    這篇文章主要介紹了深入解析MySQL的窗口函數(shù),窗口可以理解為記錄集合,窗口函數(shù)就是在滿足某種條件的記錄集合上執(zhí)行的特殊函數(shù),即:應(yīng)用在窗口內(nèi)的函數(shù),需要的朋友可以參考下
    2023-07-07
  • MySQL高效模糊搜索之內(nèi)置函數(shù)locate instr position find_in_set使用詳解

    MySQL高效模糊搜索之內(nèi)置函數(shù)locate instr position find_in_set使用詳解

    在MySQL中一般進(jìn)行模糊搜索都是使用LIKE配合通配符進(jìn)行查詢的,在性能上一定的影響,下面給大家分享MYSQL自帶的內(nèi)置模糊搜索函數(shù),除最后一個(gè)外其它三個(gè)性能上要比Like快些
    2018-09-09
  • MySQL慢日志實(shí)踐小結(jié)

    MySQL慢日志實(shí)踐小結(jié)

    這篇文章主要介紹了MySQL慢日志實(shí)踐小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • Linux下安裝mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz

    Linux下安裝mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz

    這篇文章主要介紹了Linux下安裝mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 詳解MySQL?substring()?字符串截取函數(shù)

    詳解MySQL?substring()?字符串截取函數(shù)

    MySQL 查詢數(shù)據(jù)有時(shí)候需要對(duì)數(shù)據(jù)項(xiàng)進(jìn)行日期格式化或截取特定部分的操作,當(dāng)需要對(duì)字符串進(jìn)行截取加工時(shí)用到了 substring() 函數(shù),這篇文章主要介紹了MySQL?substring()?字符串截取函數(shù),需要的朋友可以參考下
    2022-07-07
  • mysql?8.0.29?winx64.zip安裝配置方法圖文教程

    mysql?8.0.29?winx64.zip安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql?8.0.29?winx64.zip安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • MySQL數(shù)據(jù)庫對(duì)敏感數(shù)據(jù)加密及解密的實(shí)現(xiàn)方式

    MySQL數(shù)據(jù)庫對(duì)敏感數(shù)據(jù)加密及解密的實(shí)現(xiàn)方式

    這篇文章主要介紹了MySQL數(shù)據(jù)庫對(duì)敏感數(shù)據(jù)加密及解密的實(shí)現(xiàn)方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2020-03-03
  • MySQL是如何處理排序的(最新推薦)

    MySQL是如何處理排序的(最新推薦)

    在MySQL的查詢中常常會(huì)用到order by和group by這兩個(gè)關(guān)鍵字,它們的相同點(diǎn)是都會(huì)對(duì)字段進(jìn)行排序,那查詢語句中的排序是如何實(shí)現(xiàn)的呢,下面跟隨小編一起看看吧
    2024-05-05
  • SQL和NoSQL之間的區(qū)別總結(jié)

    SQL和NoSQL之間的區(qū)別總結(jié)

    在本篇內(nèi)容里我們給大家精選了關(guān)于SQL和NoSQL之間的區(qū)別的總結(jié)內(nèi)容,對(duì)此有需要的朋友們跟著學(xué)習(xí)下。
    2019-02-02
  • 詳解Linux終端 MySQL常用操作指令

    詳解Linux終端 MySQL常用操作指令

    這篇文章主要介紹了Linux終端 MySQL常用操作指令的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論