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

MySQLexplain之possible_keys、key及key_len詳解

 更新時(shí)間:2023年08月07日 16:34:40   作者:昔拉天使  
這篇文章主要介紹了MySQLexplain之possible_keys、key及key_len的用法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQLexplain之possible_keys、key及key_len

possible_keys

顯示可能應(yīng)用在這張表中的索引,一個(gè)或多個(gè)。

查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被查詢實(shí)際使用

key

實(shí)際使用的索引。如果為NULL,則沒有使用索引

查詢中若使用了覆蓋索引,則該索引和查詢的selet字段重疊,僅出現(xiàn)在key列表中。

覆蓋索引:查詢的字段與所建索引的字段個(gè)數(shù)和順序剛好吻合

key_len

表示索引中使用的字節(jié)數(shù),可通過該列計(jì)算查詢中使用的索引的長度。

在不損失精確性的情況下,長度越短越好key_len顯示的值為索引字段的最大可能長度,并非實(shí)際使用長度,即key_len是根據(jù)表定義計(jì)算而得,不是通過表內(nèi)檢索出的

mysql索引possible_keys,key問題

explain中有兩個(gè)字段possible_keys,key。

  • possible_keys:表示可能用到的索引。
  • key:實(shí)際使用到的索引。

為什么會有單獨(dú)的兩列?

你的where條件中如果使用到了索引列字段,那么possible_keys會列出索引字段對應(yīng)的索引。

mysql可能會使用到他, 但是要看實(shí)際情況,什么是實(shí)際情況?

打個(gè)比方,如果你有一個(gè)按照日期創(chuàng)建的索引列,每天插入一條數(shù)據(jù),插入了一年,那么就有365條數(shù)據(jù)。

這個(gè)時(shí)候你的搜索條件是查詢昨天的數(shù)據(jù),sql類似于:

where create_date? > '昨天'?

explain結(jié)果如下:

幾個(gè)關(guān)鍵點(diǎn):

  • type:range   表示你的sql適合范圍查詢
  • possible_keys:表示mysql可能會用到的索引(也就是create_date字段對應(yīng)的索引)。
  • key:實(shí)際用到的索引。
  • rows:1   如果查詢優(yōu)化器決定使用全表掃描的方式對某個(gè)表執(zhí)行查詢時(shí),執(zhí)行計(jì)劃的 rows 列就代表預(yù)計(jì)需要掃描的行數(shù),如果使用索引來執(zhí)行查詢時(shí),執(zhí)行計(jì)劃的 rows 列就代表預(yù)計(jì)掃描的索引記錄行數(shù)

因?yàn)槲覀冎徊樽蛱斓?,一天一條數(shù)據(jù),所以這里是1。

extra:Using index condition; 表示有些搜索條件中雖然出現(xiàn)了索引列,但卻不能使用到索引(這個(gè)是不是和possible_keys沖突了?有待驗(yàn)證)

然后我們換一個(gè)查詢方式,查昨天之前的364天的數(shù)據(jù),sql類似如下:

幾個(gè)關(guān)鍵點(diǎn):

  • type:all 表示你的sql適合范圍查詢
  • possible_keys:表示mysql可能會用到的索引(也就是create_date字段對應(yīng)的索引)。
  • key:實(shí)際用到的索引。
  • rows:1041   如果查詢優(yōu)化器決定使用全表掃描的方式對某個(gè)表執(zhí)行查詢時(shí),執(zhí)行計(jì)劃的 rows 列就代表預(yù)計(jì)需要掃描的行數(shù),如果使用索引來執(zhí)行查詢時(shí),執(zhí)行計(jì)劃的 rows 列就代表預(yù)計(jì)掃描的索引記錄行數(shù)

因?yàn)槲覀冎徊樽蛱熘暗?,所以?shù)據(jù)量是1041條。

好了,得出的結(jié)論就是possible_keys會列出你的where條件中可能會使用到的索引列,但是具體用不到這個(gè)索引,是需要根據(jù)你的實(shí)際情況來的,如果你的條件,使用到索引和不使用到索引所消耗的效果差不錯(cuò)(磁盤io,數(shù)據(jù)讀取等)。

舉例來說就是上面的例子,一個(gè)條件查詢了表中的百分之99的數(shù)據(jù),即使你的where條件中使用到了索引(并且使用了正確使用索引的姿勢。),那么優(yōu)化器也會選擇放棄使用這個(gè)索引,因?yàn)槟闶褂昧诉@個(gè)索引,還會額外帶來回表的代碼,那么還不如直接全表掃描。

那么他就會直接放棄使用這個(gè)索引,直接進(jìn)行全表掃描。反之,如果你的數(shù)據(jù)查詢確實(shí)是非常的減少磁盤io這些,那么優(yōu)化器就會使用你這個(gè)索引。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL復(fù)合查詢和內(nèi)外連接的操作代碼

    MySQL復(fù)合查詢和內(nèi)外連接的操作代碼

    實(shí)際開發(fā)中往往數(shù)據(jù)來自不同的表,所以需要多表查詢,但是可以將多張表做笛卡爾積后的表當(dāng)做是一張表,也就是單表查詢,這篇文章主要介紹了MySQL復(fù)合查詢和內(nèi)外連接,需要的朋友可以參考下
    2022-09-09
  • 解決mybatis查詢結(jié)果為null時(shí),值被默認(rèn)值替換問題

    解決mybatis查詢結(jié)果為null時(shí),值被默認(rèn)值替換問題

    這篇文章主要介紹了解決mybatis查詢結(jié)果為null時(shí),值被默認(rèn)值替換問題。具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • mysql 月份查詢該月有付款的數(shù)據(jù)

    mysql 月份查詢該月有付款的數(shù)據(jù)

    mysql選擇月份查詢該月有付款的數(shù)據(jù)(間隔x月并提前5天付款)
    2010-04-04
  • MySQL中的JSON_CONTAINS函數(shù)舉例詳解

    MySQL中的JSON_CONTAINS函數(shù)舉例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中JSON_CONTAINS函數(shù)舉例詳解的相關(guān)資料,MySQL JSON_CONTAINS函數(shù)可用于判斷JSON數(shù)組中是否包含某個(gè)元素,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Navicat連接服務(wù)器MySQL數(shù)據(jù)庫步驟及遇到錯(cuò)誤和問題

    Navicat連接服務(wù)器MySQL數(shù)據(jù)庫步驟及遇到錯(cuò)誤和問題

    Navicat是一款強(qiáng)大的數(shù)據(jù)庫管理工具,可以用來遠(yuǎn)程連接MySQL服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Navicat連接服務(wù)器MySQL數(shù)據(jù)庫步驟及遇到錯(cuò)誤和問題的相關(guān)資料,文中通過代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • MySQL主從復(fù)制延遲原因分析、判斷方法與優(yōu)化方案

    MySQL主從復(fù)制延遲原因分析、判斷方法與優(yōu)化方案

    在 MySQL 主從架構(gòu)的生產(chǎn)環(huán)境中,主從復(fù)制延遲是最常見、最影響業(yè)務(wù)穩(wěn)定性的問題之一,今天我把實(shí)戰(zhàn)中總結(jié)的延遲核心原因、精準(zhǔn)判斷方法、可落地優(yōu)化方案全流程整理出來,希望能幫大家徹底搞定主從延遲問題,需要的朋友可以參考下
    2026-03-03
  • 淺談Mysql使用B+樹來實(shí)現(xiàn)索引的原因

    淺談Mysql使用B+樹來實(shí)現(xiàn)索引的原因

    這篇文章,主要來探討一下為什么Mysql使用B+樹來實(shí)現(xiàn)索引,這里討論的目標(biāo)是Mysql的InnoDB存儲引擎.可以想象一下,如果你是Mysql的開發(fā)人員,你會怎么去選擇合適的數(shù)據(jù)結(jié)構(gòu)呢,感興趣的小伙伴跟著小編一起來探討吧
    2023-05-05
  • mysql的約束及實(shí)例分析

    mysql的約束及實(shí)例分析

    這篇文章主要介紹了mysql的約束及實(shí)例分析,真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)類型約束很單一,需要有一些額外的約束,更好的保證數(shù)據(jù)的合法性,從業(yè)務(wù)邏輯角度保證數(shù)據(jù)的正確性,需要的朋友可以參考下
    2023-07-07
  • mysql中l(wèi)imit查詢踩坑實(shí)戰(zhàn)記錄

    mysql中l(wèi)imit查詢踩坑實(shí)戰(zhàn)記錄

    在MySQL中我們常常用order by來進(jìn)行排序,使用limit來進(jìn)行分頁,下面這篇文章主要給大家介紹了關(guān)于mysql中l(wèi)imit查詢踩坑的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • 與MSSQL對比學(xué)習(xí)MYSQL的心得(六)--函數(shù)

    與MSSQL對比學(xué)習(xí)MYSQL的心得(六)--函數(shù)

    這一節(jié)主要介紹MYSQL里的函數(shù),MYSQL里的函數(shù)很多,我這里主要介紹MYSQL里有而SQLSERVER沒有的函數(shù)
    2014-08-08

最新評論

赤水市| 华池县| 湖南省| 海安县| 湖口县| 广昌县| 安康市| 刚察县| 青河县| 百色市| 云和县| 宣化县| 句容市| 庄河市| 万安县| 富民县| 华蓥市| 伊通| 英德市| 天水市| 宁乡县| 贵州省| 威宁| 岳池县| 高青县| 乾安县| 百色市| 合作市| 沂源县| 阿鲁科尔沁旗| 太湖县| 昂仁县| 西平县| 锡林郭勒盟| 克东县| 平塘县| 长阳| 长春市| 淄博市| 盐边县| 巴林右旗|