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

MySQL索引失效的幾種情況詳析

 更新時(shí)間:2020年12月01日 09:03:21   作者:哈哈二兩  
這篇文章主要給大家介紹了關(guān)于MySQL索引失效的幾種情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.前導(dǎo)模糊查詢不能利用索引(like '%XX'或者like '%XX%')

假如有這樣一列code的值為'AAA','AAB','BAA','BAB' ,如果where code like '%AB'條件,由于前面是

模糊的,所以不能利用索引的順序,必須一個(gè)個(gè)去找,看是否滿足條件。這樣會導(dǎo)致全索引掃描或者全表掃

描。如果是這樣的條件where code like 'A % ',就可以查找CODE中A開頭的CODE的位置,當(dāng)碰到B開頭的

數(shù)據(jù)時(shí),就可以停止查找了,因?yàn)楹竺娴臄?shù)據(jù)一定不滿足要求。這樣就可以利用索引了。

2.如果是組合索引的話,如果不按照索引的順序進(jìn)行查找,比如直接使用第三個(gè)位置上的索引而忽略第一二個(gè)位置上的索引時(shí),則會進(jìn)行全表查詢

索引為c1,c2,c3,c4

上圖結(jié)果顯示直接使用c3是全表查詢,無法使用該索引的,所以c3字段使用索引的前提是c1,c2兩字段均使用了索引。

3.條件中有or

應(yīng)盡量避免在 where 子句中使用 or 來連接條件,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:

select id from t where num=10 or num=20

可以這樣查詢:

select id from t where num=10 union all select id from t where num=20

4.索引無法存儲null值,所以where的判斷條件如果對字段進(jìn)行了null值判斷,將導(dǎo)致數(shù)據(jù)庫放棄索引而進(jìn)行全表查詢,如

select id from t where num is null

可以在num上設(shè)置默認(rèn)值0,確保表中num列沒有null值,然后這樣查詢:

select id from t where num=0

a.單列索引無法儲null值,復(fù)合索引無法儲全為null的值。

b.查詢時(shí),采用is null條件時(shí),不能利用到索引,只能全表掃描。

為什么索引列無法存儲Null值?

a.索引是有序的。NULL值進(jìn)入索引時(shí),無法確定其應(yīng)該放在哪里。(將索引列值進(jìn)行建樹,其中必然涉及到諸多的比較操作,null 值是不確定值無法比較,無法確定null出現(xiàn)在索引樹的葉子節(jié)點(diǎn)位置。)

5.應(yīng)盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描。

6.in 和 not in 也要慎用,否則會導(dǎo)致全表掃描,如:

select id from t where num in(1,2,3)

對于連續(xù)的數(shù)值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

7. 應(yīng)盡量避免在where子句中對字段進(jìn)行函數(shù)操作,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。如:

–name以abc開頭的id

select id from t where substring(name,1,3)='abc'

8.應(yīng)盡量避免在 where 子句中對字段進(jìn)行表達(dá)式操作,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。如:

select id from t where num/2=100

應(yīng)改為:

select id from t where num=100*2

總結(jié)

到此這篇關(guān)于MySQL索引失效的幾種情況的文章就介紹到這了,更多相關(guān)MySQL索引失效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql數(shù)據(jù)庫添加用戶及分配權(quán)限具體實(shí)現(xiàn)

    mysql數(shù)據(jù)庫添加用戶及分配權(quán)限具體實(shí)現(xiàn)

    這篇文章主要介紹了mysql數(shù)據(jù)庫添加用戶及分配權(quán)限的方法,需要的朋友可以參考下
    2014-02-02
  • MySQL慢查詢中索引沒生效的三重陷阱分析與解決

    MySQL慢查詢中索引沒生效的三重陷阱分析與解決

    我遇到了一個(gè)讓人頭疼的問題:明明創(chuàng)建了索引,查詢速度卻依然慢如蝸牛,經(jīng)過深入分析,我發(fā)現(xiàn)了索引失效的三個(gè)隱蔽陷阱,下面我們就來看看具體如何解決吧
    2025-09-09
  • MySQL必備基礎(chǔ)之分組函數(shù) 聚合函數(shù) 分組查詢詳解

    MySQL必備基礎(chǔ)之分組函數(shù) 聚合函數(shù) 分組查詢詳解

    這篇文章主要介紹了MySQL分組函數(shù)、聚合函數(shù)、分組查詢,結(jié)合實(shí)例形式分析了MySQL查詢分組函數(shù)以及查詢聚合函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2021-10-10
  • MySQL Redo與Undo日志詳細(xì)解析

    MySQL Redo與Undo日志詳細(xì)解析

    這篇文章主要介紹了MySQL Redo與Undo日志詳細(xì)解析,Redo日志是物理日志,記錄的是頁面的變化,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • MYSQL數(shù)據(jù)庫基礎(chǔ)之Join操作原理

    MYSQL數(shù)據(jù)庫基礎(chǔ)之Join操作原理

    這篇文章主要給大家介紹了關(guān)于MYSQL數(shù)據(jù)庫基礎(chǔ)之Join操作原理的相關(guān)資料,連接(join)查詢是將兩個(gè)查詢的結(jié)果以“橫向?qū)印钡姆绞胶喜⑵饋淼慕Y(jié)果,需要的朋友可以參考下
    2021-07-07
  • MySQL無法啟動1067錯(cuò)誤的又一種解決方法(機(jī)房斷電)

    MySQL無法啟動1067錯(cuò)誤的又一種解決方法(機(jī)房斷電)

    今早在對一張table 創(chuàng)建primay key過程中發(fā)生了斷電,當(dāng)電腦再次啟動時(shí)候,發(fā)現(xiàn)mysql 服務(wù)無法啟動,使用 net start 提示 1067錯(cuò)誤,折騰了2個(gè)小時(shí)無法解決,后來只能通過手工刪除數(shù)據(jù)文件,日志文件,再啟動服務(wù),然后導(dǎo)入數(shù)據(jù)來完成
    2013-01-01
  • mysql存儲過程實(shí)現(xiàn)split示例

    mysql存儲過程實(shí)現(xiàn)split示例

    這篇文章主要介紹了mysql存儲過程實(shí)現(xiàn)split示例,需要的朋友可以參考下
    2014-05-05
  • ubuntu 15.04下mysql開放遠(yuǎn)程3306端口

    ubuntu 15.04下mysql開放遠(yuǎn)程3306端口

    這篇文章主要為大家詳細(xì)介紹了ubuntu 15.04開放mysql遠(yuǎn)程3306端口的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MYSQL單表操作學(xué)習(xí)之DDL、DML及DQL語句示例

    MYSQL單表操作學(xué)習(xí)之DDL、DML及DQL語句示例

    DML、DDL、DCL和DQL是數(shù)據(jù)庫中常用的四種語言,分別用于數(shù)據(jù)操作、數(shù)據(jù)定義、數(shù)據(jù)控制和數(shù)據(jù)查詢,下面這篇文章主要給大家介紹了關(guān)于MYSQL單表操作學(xué)習(xí)之DDL、DML及DQL語句的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 2022最新版MySQL 8.0.30 安裝及配置教程(小白入門)

    2022最新版MySQL 8.0.30 安裝及配置教程(小白入門)

    這篇文章主要介紹了2022最新版MySQL 8.0.30 安裝及配置教程,安裝過程算是比較簡單的,今天給大家分享的此文比較適合mysql數(shù)據(jù)庫的小白,需要的朋友可以參考下
    2022-09-09

最新評論

新津县| 华容县| 杨浦区| 凯里市| 太原市| 寻甸| 河曲县| 张北县| 大同市| 吉木乃县| 综艺| 女性| 南江县| 仙桃市| 宿州市| 环江| 房产| 芦山县| 福州市| 佛学| 临颍县| 平顺县| 泸州市| 准格尔旗| 麦盖提县| 县级市| 无棣县| 邵武市| 贡嘎县| 孙吴县| 射洪县| 五台县| 渑池县| 大竹县| 页游| 安远县| 雅江县| 泗阳县| 徐闻县| 永安市| 清丰县|