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

MySQL:explain結(jié)果中Extra:Impossible?WHERE?noticed?after?reading?const?tables問(wèn)題

 更新時(shí)間:2023年12月22日 10:43:13   作者:段曉慢  
這篇文章主要介紹了MySQL:explain結(jié)果中Extra:Impossible?WHERE?noticed?after?reading?const?tables問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前情提要

上午有同事突然找我,向我反饋說(shuō)在對(duì)MySQL中的語(yǔ)句進(jìn)行explain解析的時(shí)候,explain的結(jié)果中table、type、possible_keys、key等關(guān)鍵性字段都是空的,什么信息都得不到,而當(dāng)把其中一個(gè)字段phone,類(lèi)型是varchar的單引號(hào)去掉了之后,也就是說(shuō)把where phone='13800138000' 改為where phone=13800138000之后,再執(zhí)行explain就能得到explain的關(guān)鍵性字段的結(jié)果了。

這個(gè)就讓我很納悶,不合常理啊,字段的隱式轉(zhuǎn)換正常來(lái)說(shuō)這種情況應(yīng)該會(huì)導(dǎo)致索引失效才對(duì)啊,現(xiàn)在竟然是反之生效,刷新了我們的認(rèn)知。

我就說(shuō)了下面一句話:

一個(gè)不合常理的現(xiàn)象往往都是由于一個(gè)不起眼的或者平時(shí)被我們忽略的點(diǎn)所造成的

出現(xiàn)的情況

這種非常理所能解釋通的現(xiàn)象,引起了我的好奇心。

從上圖中看到Extra:Impossible WHERE noticed after reading const tables,字面上的意思是:讀取const tables表之后,沒(méi)有發(fā)現(xiàn)匹配的行。

其實(shí),這個(gè)跟MySQL的版本有關(guān),在 MySQL 5.7.17 下的執(zhí)行結(jié)果中可以發(fā)現(xiàn)同樣的表結(jié)構(gòu)、同樣的數(shù)據(jù)、同樣的查詢語(yǔ)句,Extra 中的顯示的內(nèi)容為“no matching row in const table”,這句話理解起來(lái)就容易多了。

原因

產(chǎn)生“ Impossible WHERE noticed after reading const tables”的原因是這樣的,MySQL在 EXPLAIN 之前會(huì)優(yōu)先根據(jù)這一條件查找出對(duì)應(yīng)的記錄,并用記錄的實(shí)際值替換查詢中所有使用到的該表屬性。

這是因?yàn)闈M足以下四個(gè)條件時(shí),就會(huì)使得針對(duì)該表的查詢最多只能產(chǎn)生一條命中結(jié)果,在該表無(wú)法命中數(shù)據(jù)的情況下就會(huì)提示“在 const table 表中沒(méi)有找到匹配的行”,而這個(gè) “const table”就指的是滿足下面四個(gè)條件的表。

這是 MySQL 的一個(gè)優(yōu)化策略。

  • 當(dāng)查詢條件中包含了某個(gè)表的主鍵或者非空的唯一索引列
  • 該列的判定條件為等值條件
  • 目標(biāo)值的類(lèi)型與該列的類(lèi)型一致
  • 目標(biāo)值為一個(gè)確定的常量

而我們的這張表user_info的這個(gè)查詢語(yǔ)句剛好符合這4個(gè)條件,原因:

1、phone是非空的唯一索引列;

2、phone= '13800138000’是等值條件

3、phone是字符串類(lèi)型,'13800138000’也是字符串類(lèi)型

4、13800138000是一個(gè)確定的常量

總結(jié)

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

相關(guān)文章

  • mysql?in索引慢查詢優(yōu)化實(shí)現(xiàn)步驟解析

    mysql?in索引慢查詢優(yōu)化實(shí)現(xiàn)步驟解析

    這篇文章主要為大家介紹了mysql?in慢查詢優(yōu)化實(shí)現(xiàn)步驟的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • you *might* want to use the less safe log_bin_trust_function_creators variable

    you *might* want to use the less safe log_bin_trust_function

    you *might* want to use the less safe log_bin_trust_function_creators variable
    2011-07-07
  • 關(guān)于skip_name_resolve參數(shù)的總結(jié)分享

    關(guān)于skip_name_resolve參數(shù)的總結(jié)分享

    下面小編就為大家?guī)?lái)一篇關(guān)于skip_name_resolve參數(shù)的總結(jié)分享。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家。給大家一個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-03-03
  • mysql8.0.21安裝教程圖文詳解

    mysql8.0.21安裝教程圖文詳解

    這篇文章主要介紹了mysql8.0.21安裝教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Mysql寫(xiě)入數(shù)據(jù)十幾秒后被自動(dòng)刪除了如何解決

    Mysql寫(xiě)入數(shù)據(jù)十幾秒后被自動(dòng)刪除了如何解決

    這篇文章主要介紹了Mysql寫(xiě)入數(shù)據(jù)十幾秒后被自動(dòng)刪除了如何解決,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL中隔離級(jí)別的4種小結(jié)

    MySQL中隔離級(jí)別的4種小結(jié)

    事務(wù)隔離級(jí)別決定了事務(wù)之間如何相互隔離,以防止數(shù)據(jù)不一致和其他并發(fā)問(wèn)題,本文主要介紹了MySQL中隔離級(jí)別的4種,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-07-07
  • mysql添加索引反而速度變慢的問(wèn)題

    mysql添加索引反而速度變慢的問(wèn)題

    這篇文章主要介紹了mysql添加索引反而速度變慢的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL不使用子查詢的原因及優(yōu)化案例

    MySQL不使用子查詢的原因及優(yōu)化案例

    對(duì)于mysql,不推薦使用子查詢,效率太差,執(zhí)行子查詢時(shí),MYSQL需要?jiǎng)?chuàng)建臨時(shí)表,查詢完畢后再刪除這些臨時(shí)表,所以,子查詢的速度會(huì)受到一定的影響,本文給大家詳細(xì)介紹了MySQL不使用子查詢的原因及優(yōu)化案例,需要的朋友可以參考下
    2025-01-01
  • 快速增加MYSQL數(shù)據(jù)庫(kù)連接數(shù)負(fù)載能力的方法分享

    快速增加MYSQL數(shù)據(jù)庫(kù)連接數(shù)負(fù)載能力的方法分享

    mysql數(shù)據(jù)庫(kù)的負(fù)載能力除了和你機(jī)器硬件有關(guān),還有一個(gè)重要參數(shù)就是你系統(tǒng)的配置有關(guān),下面我來(lái)給大家介紹幾種提高M(jìn)YSQL數(shù)據(jù)庫(kù)連接數(shù)負(fù)載能力方法總結(jié),有需要的朋友可以參考一下
    2013-08-08
  • MySQL5.7不停業(yè)務(wù)將傳統(tǒng)復(fù)制變更為GTID復(fù)制的實(shí)例

    MySQL5.7不停業(yè)務(wù)將傳統(tǒng)復(fù)制變更為GTID復(fù)制的實(shí)例

    下面小編就為大家?guī)?lái)一篇MySQL5.7不停業(yè)務(wù)將傳統(tǒng)復(fù)制變更為GTID復(fù)制的實(shí)例。小編覺(jué)的挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03

最新評(píng)論

湘潭市| 巩义市| 陇川县| 东明县| 盐池县| 阜新市| 分宜县| 呼图壁县| 兴安县| 望谟县| 拜城县| 临漳县| 新宾| 秀山| 交城县| 乐东| 那坡县| 堆龙德庆县| 固始县| 青冈县| 东丰县| 卓尼县| 云龙县| 麻江县| 安庆市| 太仆寺旗| 华亭县| 十堰市| 崇左市| 凌海市| 垫江县| 万载县| 苏尼特左旗| 额尔古纳市| 德格县| 莆田市| 沽源县| 新乡县| 长子县| 华容县| 昌吉市|