最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql性能優(yōu)化案例 - 覆蓋索引分享

 更新時間:2016年03月10日 12:48:15   投稿:mdxy-dxy  
這篇文章主要介紹了Mysql性能優(yōu)化案例 - 覆蓋索引分享,需要的朋友可以參考下

場景

產(chǎn)品中有一張圖片表,數(shù)據(jù)量將近100萬條,有一條相關(guān)的查詢語句,由于執(zhí)行頻次較高,想針對此語句進(jìn)行優(yōu)化

表結(jié)構(gòu)很簡單,主要字段:

復(fù)制代碼 代碼如下:

user_id 用戶ID
picname 圖片名稱
smallimg 小圖名稱

一個用戶會有多條圖片記錄

現(xiàn)在有一個根據(jù)user_id建立的索引:uid

查詢語句也很簡單:取得某用戶的圖片集合

復(fù)制代碼 代碼如下:

select picname, smallimg
from pics where user_id = xxx;

優(yōu)化前

執(zhí)行查詢語句(為了查看真實(shí)執(zhí)行時間,強(qiáng)制不使用緩存)

復(fù)制代碼 代碼如下:

select SQL_NO_CACHE picname, smallimg
from pics where user_id=17853;

執(zhí)行了10次,平均耗時在40ms左右

使用explain進(jìn)行分析

復(fù)制代碼 代碼如下:

explain select SQL_NO_CACHE picname, smallimg
from pics where user_id=17853

使用了user_id的索引,并且是const常數(shù)查找,表示性能已經(jīng)很好了

優(yōu)化后

因?yàn)檫@個語句太簡單,sql本身沒有什么優(yōu)化空間,就考慮了索引

修改索引結(jié)構(gòu),建立一個(user_id,picname,smallimg)的聯(lián)合索引:uid_pic

重新執(zhí)行10次,平均耗時降到了30ms左右

使用explain進(jìn)行分析

看到使用的索引變成了剛剛建立的聯(lián)合索引,并且Extra部分顯示使用了'Using Index'

總結(jié)

'Using Index'的意思是“覆蓋索引”,它是使上面sql性能提升的關(guān)鍵

一個包含查詢所需字段的索引稱為“覆蓋索引”

MySQL只需要通過索引就可以返回查詢所需要的數(shù)據(jù),而不必在查到索引之后進(jìn)行回表操作,減少IO,提高了效率

例如上面的sql,查詢條件是user_id,可以使用聯(lián)合索引,要查詢的字段是picname smallimg,這兩個字段也在聯(lián)合索引中,這就實(shí)現(xiàn)了“覆蓋索引”,可以根據(jù)這個聯(lián)合索引一次性完成查詢工作,所以提升了性能

相關(guān)文章

  • MySQL中insert語句的使用與優(yōu)化教程

    MySQL中insert語句的使用與優(yōu)化教程

    這篇文章主要介紹了MySQL中insert語句的使用與優(yōu)化教程,使用insert語句插入數(shù)據(jù)是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-03-03
  • MySQL Shell的介紹以及安裝

    MySQL Shell的介紹以及安裝

    這篇文章主要介紹了MySQL Shell的介紹以及安裝,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-04-04
  • MySQL實(shí)現(xiàn)查詢數(shù)據(jù)庫表記錄數(shù)

    MySQL實(shí)現(xiàn)查詢數(shù)據(jù)庫表記錄數(shù)

    這篇文章主要介紹了MySQL實(shí)現(xiàn)查詢數(shù)據(jù)庫表記錄數(shù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • MySql死鎖排查的問題解決

    MySql死鎖排查的問題解決

    本文主要介紹了MySQL死鎖的排查方法和解決方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • MySQL時間戳與日期格式的相互轉(zhuǎn)換

    MySQL時間戳與日期格式的相互轉(zhuǎn)換

    在MySQL數(shù)據(jù)庫中,時間戳和日期格式是常用的數(shù)據(jù)類型,在MySQL中,我們可以使用函數(shù)還相互轉(zhuǎn)換時間戳和日期格式,下面我將詳細(xì)的給大家介紹如何進(jìn)行轉(zhuǎn)換,并提供相應(yīng)的代碼示例,感興趣的小伙伴跟著小編一起來看看吧
    2024-01-01
  • Centos 5.2下安裝多個mysql數(shù)據(jù)庫配置詳解

    Centos 5.2下安裝多個mysql數(shù)據(jù)庫配置詳解

    在實(shí)際應(yīng)用中,有時候,我們需要在同一臺服務(wù)器上安裝兩個甚至多個mysql數(shù)據(jù)庫,那么,如何來操作呢,今天我們就來探討下這個問題
    2014-07-07
  • Windows10下mysql 8.0.12 解壓版安裝圖文教程

    Windows10下mysql 8.0.12 解壓版安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows10下mysql 8.0.12 解壓版安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • SQL 聚合、分組和排序

    SQL 聚合、分組和排序

    這篇文章主要介紹了SQL 聚合、分組和排序,文章圍繞SQL 聚合、分組、排序的相關(guān)資料展開具體內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • MySQL?視圖、函數(shù)和存儲過程詳解

    MySQL?視圖、函數(shù)和存儲過程詳解

    視圖、函數(shù)和存儲過程都是 MySQL 中非常重要的數(shù)據(jù)庫對象,它們可以提高數(shù)據(jù)庫的效率和可重用性,使開發(fā)人員更加高效地處理數(shù)據(jù),這篇文章主要介紹了MySQL?視圖、函數(shù)和存儲過程,需要的朋友可以參考下
    2023-04-04
  • 使用MySQL進(jìn)行千萬級別數(shù)據(jù)查詢的技巧分享

    使用MySQL進(jìn)行千萬級別數(shù)據(jù)查詢的技巧分享

    這篇文章主要介紹了如何使用MySQL進(jìn)行千萬級別數(shù)據(jù)查詢的技巧,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03

最新評論

嘉禾县| 原阳县| 凤凰县| 泸定县| 秦安县| 明溪县| 抚顺县| 张北县| 潞西市| 普安县| 大英县| 邵武市| 邵武市| 钟山县| 分宜县| 黎平县| 出国| 仁化县| 鹤壁市| 汉沽区| 浪卡子县| 剑阁县| 甘泉县| 甘德县| 瑞安市| 当涂县| 麻江县| 习水县| 廊坊市| 金山区| 卢湾区| 宁武县| 台南县| 拉萨市| 南宁市| 商水县| 六安市| 平遥县| 抚州市| 磐石市| 那曲县|