MySQL索引失效

模 型 數(shù) 空 運(yùn) 最 快
口訣字面意思就是,要運(yùn)送一個產(chǎn)品模型的話,要用空運(yùn),不要用陸運(yùn)和海運(yùn),數(shù)空運(yùn)最快。叫作:模型數(shù)空運(yùn)最快。

下面我拆開逐字講解一下:

模:
模糊查詢的意思。like的模糊查詢以%開頭,索引失效。比如:

SELECT * FROM user WHERE name LIKE ‘%老猿’;

型:
代表數(shù)據(jù)類型。類型錯誤,如字段類型為varchar,where條件用number,索引也會失效。比如:

SELECT * FROM user WHERE height= 180;

height為varchar類型導(dǎo)致索引失效。

數(shù):
是函數(shù)的意思。對索引的字段使用內(nèi)部函數(shù),索引也會失效。這種情況下應(yīng)該建立基于函數(shù)的索引。比如:

SELECT * FROM user WHERE DATE(create_time) = ‘2020-09-03’;

create_time字段設(shè)置索引,那就無法使用函數(shù),否則索引失效。

空:
是Null的意思。索引不存儲空值,如果不限制索引列是not null,數(shù)據(jù)庫會認(rèn)為索引列有可能存在空值,所以不會按照索引進(jìn)行計算。比如:

SELECT * FROM user WHERE address IS NULL不走索引。

SELECT * FROM user WHERE address IS NOT NULL;走索引。

建議大家這設(shè)計字段的時候,如果沒有必要的要求必須為NULL,那么最好給個默認(rèn)值空字符串,這可以解決很多后續(xù)的麻煩(切記)。

運(yùn):
是運(yùn)算的意思。對索引列進(jìn)行(+,-,*,/,!, !=, <>)等運(yùn)算,會導(dǎo)致索引失效。比如:

SELECT * FROM user WHERE age - 1 = 20;

最:
是最左原則。在復(fù)合索引中索引列的順序至關(guān)重要。如果不是按照索引的最左列開始查找,則無法使用索引。

快:
全表掃描更快的意思。如果數(shù)據(jù)庫預(yù)計使用全表掃描要比使用索引快,則不使用索引。

這就是索引失效的七字口訣,請大家點(diǎn)贊之后默念三遍,模型數(shù)空運(yùn)最快。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 哪些情況需要創(chuàng)建索引 主鍵自動建立唯一索引頻繁作為查詢條件的字段應(yīng)該創(chuàng)建索引多表關(guān)聯(lián)查詢中,關(guān)聯(lián)字段應(yīng)該創(chuàng)建索引 ...
    Doooook閱讀 866評論 0 0
  • 1.索引失效的原因聯(lián)合索引排序的原理:先對第一個字段進(jìn)行排序,在第一個字段相同的情況下考慮第二個字段,然后在第二個...
    是淼子啊閱讀 2,770評論 1 0
  • 沒有查詢條件,或者查詢條件沒有建立索引 在查詢條件上沒有使用引導(dǎo)列 查詢的數(shù)量是大表的大部分,應(yīng)該是30%以上。 ...
    Melons_dd39閱讀 180評論 0 0
  • mysql 索引失效有以下幾種情況 1,or 語句,如果要在or語句中使用索引,那么所有條件都必須使用索引,建議盡...
    青城樓主閱讀 2,810評論 0 2
  • 索引并不會時時發(fā)生,有時就算是where查詢字段中添加了索引,索引也會失效,下面我們來講講五種索引失效的場景。 1...
    48892085f47c閱讀 9,556評論 0 8

友情鏈接更多精彩內(nèi)容