欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

數(shù)據(jù)時,就可以停止查找了,因為后面的數(shù)據(jù)一定不滿足要求。這樣就可以利用索引了。

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

索引為c1,c2,c3,c4

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

3.條件中有or

應盡量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,如:

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的判斷條件如果對字段進行了null值判斷,將導致數(shù)據(jù)庫放棄索引而進行全表查詢,如

select id from t where num is null

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

select id from t where num=0

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

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

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

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

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

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

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. 應盡量避免在where子句中對字段進行函數(shù)操作,這將導致引擎放棄使用索引而進行全表掃描。如:

–name以abc開頭的id

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

8.應盡量避免在 where 子句中對字段進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描。如:

select id from t where num/2=100

應改為:

select id from t where num=100*2

總結

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

相關文章

  • MySQL數(shù)據(jù)庫遷移快速導出導入大量數(shù)據(jù)

    MySQL數(shù)據(jù)庫遷移快速導出導入大量數(shù)據(jù)

    今天小編就為大家分享一篇關于MySQL數(shù)據(jù)庫遷移快速導出導入大量數(shù)據(jù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • CentOS 6、7下mysql 5.7 詳細安裝教程

    CentOS 6、7下mysql 5.7 詳細安裝教程

    這篇文章主要為大家介紹了CentOS 6、7下mysql 5.7 詳細安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • MySQL的分區(qū)表使用場景及示例小結

    MySQL的分區(qū)表使用場景及示例小結

    MySQL的分區(qū)表功能在某些場景下可以顯著提高查詢效率,本文主要介紹了MySQL的分區(qū)表使用場景及示例小結,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 詳解MySQL的字段默認null對唯一索引的影響

    詳解MySQL的字段默認null對唯一索引的影響

    這篇文章主要為大家介紹了MySQL的字段默認null對唯一索引的影響詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • mysql 5.7.16 安裝配置方法圖文教程(ubuntu 16.04)

    mysql 5.7.16 安裝配置方法圖文教程(ubuntu 16.04)

    這篇文章主要為大家分享了ubuntu 16.04下mysql 5.7.16 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Mysql的水平分表與垂直分表的講解

    Mysql的水平分表與垂直分表的講解

    今天小編就為大家分享一篇關于Mysql的水平分表與垂直分表的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MYSQL 數(shù)據(jù)庫導入導出命令

    MYSQL 數(shù)據(jù)庫導入導出命令

    在不同操作系統(tǒng)或MySQL版本情況下,直接拷貝文件的方法可能會有不兼容的情況發(fā)生。所以一般推薦用SQL腳本形式導入。下面分別介紹兩種方法。
    2010-11-11
  • 解決mySQL中1862(phpmyadmin)/1820(mysql)錯誤的方法

    解決mySQL中1862(phpmyadmin)/1820(mysql)錯誤的方法

    最近在工作中發(fā)現(xiàn)一直在運行的mysql突然報錯了,錯誤提示1820,phpmyadmin也不能登陸,錯誤為1862,雖然摸不著頭腦但只能想辦法解決,下面這篇文章給大家分享了解決這個問題的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • mysql update語句的用法詳解

    mysql update語句的用法詳解

    本文詳細介紹了,mysql中update語句的用法,系統(tǒng)全面的學習下update更新語句的用法,有需要的朋友可以參考下
    2014-08-08
  • MySQL 日期格式化的使用示例

    MySQL 日期格式化的使用示例

    在MySQL中,可以使用DATE_FORMAT函數(shù)對日期進行格式化,本文就來介紹一下MySQL 日期格式化的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10

最新評論