亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql百萬(wàn)級(jí)分頁(yè)優(yōu)化技巧

 更新時(shí)間:2016年12月28日 08:41:23   投稿:mrr  
這篇文章主要介紹了Mysql百萬(wàn)級(jí)分頁(yè)優(yōu)化技巧,包括普通分頁(yè)和優(yōu)化分頁(yè)兩種,在數(shù)據(jù)量比較大的時(shí)候,我們盡量去利用索引來(lái)優(yōu)化語(yǔ)句。下面通過(guò)本文給大家詳細(xì)講解,一起看看吧

普通分頁(yè)

   數(shù)據(jù)分頁(yè)在網(wǎng)頁(yè)中十分多見(jiàn),分頁(yè)一般都是limit start,offset,然后根據(jù)頁(yè)碼page計(jì)算start

select * from user limit 1,20

   這種分頁(yè)在幾十萬(wàn)的時(shí)候分頁(yè)效率就會(huì)比較低了,MySQL需要從頭開始一直往后計(jì)算,這樣大大影響效率

SELECT * from user limit 100001,20; //time 0.151s
explain SELECT * from user limit 100001,20;

  我們可以用explain分析下語(yǔ)句,沒(méi)有用到任何索引,MySQL執(zhí)行的行數(shù)是16W+,于是我們可以想用到索引去實(shí)現(xiàn)分頁(yè)

   優(yōu)化分頁(yè)

   使用主鍵索引來(lái)優(yōu)化數(shù)據(jù)分頁(yè)

select * from user where id>(select id from user where id>=100000 limit 1) limit 20; //time 0.003s

  使用explain分析語(yǔ)句,MySQL這次掃描的行數(shù)是8W+,時(shí)間也大大縮短。

 explain select * from user where id>(select id from user where id>=100000 limit 1) limit 20; 

     總結(jié)

  在數(shù)據(jù)量比較大的時(shí)候,我們盡量去利用索引來(lái)優(yōu)化語(yǔ)句。上面的優(yōu)化方法如果id不是主鍵索引,查詢效率比第一種還要低點(diǎn)。我們可以先使用explain來(lái)分析語(yǔ)句,查看語(yǔ)句的執(zhí)行順序和執(zhí)行性能。

補(bǔ)充:mysql中百萬(wàn)級(jí)別分頁(yè)查詢性能優(yōu)化

前提條件:

1.表的唯一索引

2.百萬(wàn)級(jí)數(shù)據(jù)

SQL語(yǔ)句:

select
     c.*
     FROM
  (
  SELECT
   a.logid
  FROM
   tableA a
  where 1 = 1
     <#if phone?exists&& phone!=""> 
      AND a.phone like "%":phone"%" 
     </#if>
   ORDER BY
    a.create_time DESC
   limit :startIndex,:maxCount
  ) b,tableA c
  where 1 = 1 AND b.logid = c.logid

其中:

1:startIndex:表示查找數(shù)據(jù)的開始位置

2:maxCount:表示每頁(yè)顯示數(shù)據(jù)個(gè)數(shù)

3:a.create_time DESC:降序排列,需要在create_time建立索引

4:limiit放在里面,而不要放在查詢的外面,這樣效率提升很多

5:logid:唯一索引

相關(guān)文章

  • mysql錯(cuò)誤處理之ERROR 1665 (HY000)

    mysql錯(cuò)誤處理之ERROR 1665 (HY000)

    最近一直在mysql的各個(gè)版本直接徘徊,這中間遇到了各種各樣的錯(cuò)誤,將已經(jīng)處理完畢的幾個(gè)錯(cuò)誤整理了一下,分享給大家,這次我們來(lái)看看錯(cuò)誤提示 ERROR 1665 (HY000)
    2014-07-07
  • 老生常談MYSQL模式匹配 REGEXP和like的用法

    老生常談MYSQL模式匹配 REGEXP和like的用法

    下面小編就為大家?guī)?lái)一篇老生常談MYSQL模式匹配 REGEXP和like的用法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • MySQL分區(qū)表的最佳實(shí)踐指南

    MySQL分區(qū)表的最佳實(shí)踐指南

    這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)表的最佳實(shí)踐指南,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • MySQL 錯(cuò)誤處理例子[譯]

    MySQL 錯(cuò)誤處理例子[譯]

    MySQL 錯(cuò)誤處理例子,國(guó)外人寫的,大家可以參考下。
    2009-10-10
  • CentOS 6.5安裝mysql5.7教程

    CentOS 6.5安裝mysql5.7教程

    這篇文章主要為大家詳細(xì)介紹了CentOS 6.5安裝mysql5.7教程,包括mysal舊版本的卸載、新版本的升級(jí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • MySQL覆蓋索引和索引跳躍掃描方式

    MySQL覆蓋索引和索引跳躍掃描方式

    這篇文章主要介紹了MySQL覆蓋索引和索引跳躍掃描方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • centos下mysql主從復(fù)制設(shè)置詳解

    centos下mysql主從復(fù)制設(shè)置詳解

    centos5.4下mysql主從復(fù)制步驟詳解,大家參考使用吧
    2013-12-12
  • 分享下mysql各個(gè)主要版本之間的差異

    分享下mysql各個(gè)主要版本之間的差異

    因?yàn)閙ysql的版本較多,而且又被oracle公司收購(gòu),所有很多朋友不是很清楚各個(gè)版本的區(qū)別,這里簡(jiǎn)單介紹下,方便需要的朋友
    2013-06-06
  • Mysql事項(xiàng),視圖,函數(shù),觸發(fā)器命令(詳解)

    Mysql事項(xiàng),視圖,函數(shù),觸發(fā)器命令(詳解)

    下面小編就為大家?guī)?lái)一篇Mysql事項(xiàng),視圖,函數(shù),觸發(fā)器命令(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • MySQL如何處理InnoDB并發(fā)事務(wù)中的間隙鎖死鎖

    MySQL如何處理InnoDB并發(fā)事務(wù)中的間隙鎖死鎖

    這篇文章主要為大家介紹了MySQL如何處理InnoDB并發(fā)事務(wù)中的間隙鎖死鎖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10

最新評(píng)論