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

MySQL索引失效的幾種情況匯總

 更新時間:2020年09月24日 15:09:48   作者:Achilles_Heel  
這篇文章主要介紹了MySQL索引失效的幾種情況,幫助大家更好的理解和使用MySQL索引,感興趣的朋友可以了解下

一.索引不存儲null值

更準(zhǔn)確的說,單列索引不存儲null值,復(fù)合索引不存儲全為null的值。索引不能存儲Null,所以對這列采用is null條件時,因為索引上根本
沒Null值,不能利用到索引,只能全表掃描。
為什么索引列不能存Null值?
將索引列值進行建樹,其中必然涉及到諸多的比較操作。Null值的特殊性就在于參與的運算大多取值為null。
這樣的話,null值實際上是不能參與進建索引的過程。也就是說,null值不會像其他取值一樣出現(xiàn)在索引樹的葉子節(jié)點上。

二.不適合鍵值較少的列(重復(fù)數(shù)據(jù)較多的列)

假如索引列TYPE有5個鍵值,如果有1萬條數(shù)據(jù),那么 WHERE TYPE = 1將訪問表中的2000個數(shù)據(jù)塊。
再加上訪問索引塊,一共要訪問大于200個的數(shù)據(jù)塊。
如果全表掃描,假設(shè)10條數(shù)據(jù)一個數(shù)據(jù)塊,那么只需訪問1000個數(shù)據(jù)塊,既然全表掃描訪問的數(shù)據(jù)塊少一些,肯定就不會利用索引了。

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

假如有這樣一列code的值為'AAA','AAB','BAA','BAB' ,如果where code like '%AB'條件,由于前面是
模糊的,所以不能利用索引的順序,必須一個個去找,看是否滿足條件。這樣會導(dǎo)致全索引掃描或者全表掃
描。如果是這樣的條件where code like 'A % ',就可以查找CODE中A開頭的CODE的位置,當(dāng)碰到B開頭的
數(shù)據(jù)時,就可以停止查找了,因為后面的數(shù)據(jù)一定不滿足要求。這樣就可以利用索引了。

四.索引失效的幾種情況

1.如果條件中有or,即使其中有條件帶索引也不會使用(這也是為什么盡量少用or的原因)
要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引

select * from tb1 where nid = 1 or name = 'seven@live.com';
 
 
 --特別的:當(dāng)or條件中有未建立索引的列才失效,以下會走索引
   select * from tb1 where nid = 1 or name = 'seven';
   select * from tb1 where nid = 1 or name = 'seven@live.com' and email = 'alex'

2.對于多列索引,不是使用的第一部分,則不會使用索引

3.like查詢以%開頭

select * from tb1 where email like '%cn';

4.如果列類型是字符串,那一定要在條件中將數(shù)據(jù)使用引號引用起來,否則不使用索引

elect * from tb1 where email = 999;

5.如果mysql估計使用全表掃描要比使用索引快,則不使用索引

6.普通索引的不等于不會走索引

- !=
 select * from tb1 where email != 'alex'
 
 --特別的:如果是主鍵,則還是會走索引
  select * from tb1 where nid != 123
- >
 select * from tb1 where email > 'alex'
 
 
 --特別的:如果是主鍵或索引是整數(shù)類型,則還是會走索引
  select * from tb1 where nid > 123
  select * from tb1 where num > 123

7.組合索引最左前綴

如果組合索引為:(name,email)

name and email -- 使用索引
name -- 使用索引
email -- 不使用索引

以上就是MySQL索引失效的幾種情況匯總的詳細內(nèi)容,更多關(guān)于MySQL索引失效的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 通過兩種方式增加從庫——不停止mysql服務(wù)

    通過兩種方式增加從庫——不停止mysql服務(wù)

    現(xiàn)在生產(chǎn)環(huán)境MySQL數(shù)據(jù)庫是一主一從,由于業(yè)務(wù)量訪問不斷增大,故再增加一臺從庫。前提是不能影響線上業(yè)務(wù)使用,也就是說不能重啟MySQL服務(wù),為了避免出現(xiàn)其他情況,選擇在網(wǎng)站訪問量低峰期時間段操作
    2015-11-11
  • mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說明詳解(16G內(nèi)存)

    mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說明詳解(16G內(nèi)存)

    這篇文章主要介紹了mysql服務(wù)性能優(yōu)化—my.cnf_my.ini配置說明詳解(16G內(nèi)存),需要的朋友可以參考下
    2016-05-05
  • 淺談MySQL索引優(yōu)化分析

    淺談MySQL索引優(yōu)化分析

    這篇文章主要介紹了淺談MySQL索引優(yōu)化分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • MySql UNION 一行轉(zhuǎn)多列的實現(xiàn)示例

    MySql UNION 一行轉(zhuǎn)多列的實現(xiàn)示例

    在MySQL命令行中,有時候我們會遇到一行的數(shù)據(jù)需要以多列的形式呈現(xiàn)的情況,本文就詳細介紹了一下一行轉(zhuǎn)多列的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Ubuntu 設(shè)置開放 MySQL 服務(wù)遠程訪問教程

    Ubuntu 設(shè)置開放 MySQL 服務(wù)遠程訪問教程

    這篇文章主要介紹了Ubuntu 設(shè)置開放 MySQL 服務(wù)遠程訪問教程,需要的朋友可以參考下
    2014-10-10
  • mysql 模糊查詢 concat()的用法詳解

    mysql 模糊查詢 concat()的用法詳解

    大家都知道concat()函數(shù),是用來連接字符串,今天通過本文給大家介紹mysql 模糊查詢 concat()及concat的用法,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • MySQL 刪除數(shù)據(jù)詳解(最新整理)

    MySQL 刪除數(shù)據(jù)詳解(最新整理)

    這篇文章主要介紹了MySQL 刪除數(shù)據(jù)的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-07-07
  • MySQL InnoDB ReplicaSet(副本集)簡單介紹

    MySQL InnoDB ReplicaSet(副本集)簡單介紹

    這篇文章主要介紹了MySQL InnoDB ReplicaSet(副本集)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-04-04
  • mysql慢查詢使用詳解

    mysql慢查詢使用詳解

    慢查詢是我們在mysql中經(jīng)常需要使用到的一個很方便的功能,慢查詢對于跟蹤有問題的查詢很有用,可以分析出當(dāng)前程序里那些Sql語句比較耗費資源。
    2014-12-12
  • mysql主從同步復(fù)制錯誤解決一例

    mysql主從同步復(fù)制錯誤解決一例

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids
    2011-05-05

最新評論

那坡县| 达孜县| 长沙市| 灵宝市| 体育| 大洼县| 会东县| 江门市| 仁布县| 临夏市| 临汾市| 礼泉县| 甘肃省| 宜宾县| 蓬溪县| 佛山市| 丰顺县| 祁东县| 泰宁县| 绩溪县| 共和县| 措美县| 金坛市| 霍州市| 自治县| 廉江市| 绥中县| 五指山市| 康平县| 锦屏县| 封开县| 潜山县| 霸州市| 靖边县| 蓝山县| 文成县| 米泉市| 竹溪县| 晋州市| 宜昌市| 昭平县|