模 型 數(shù) 空 運(yùn) 最 快
口訣字面意思就是省核,要運(yùn)送一個(gè)產(chǎn)品模型的話掂僵,要用空運(yùn)航厚,不要用陸運(yùn)和海運(yùn),數(shù)空運(yùn)最快锰蓬。叫作:模型數(shù)空運(yùn)最快幔睬。
下面我拆開(kāi)逐字講解一下:
模:
模糊查詢的意思。like的模糊查詢以%開(kāi)頭互妓,索引失效溪窒。比如:
SELECT * FROM user WHERE name LIKE ‘%老猿’;
型:
代表數(shù)據(jù)類型。類型錯(cuò)誤冯勉,如字段類型為varchar澈蚌,where條件用number,索引也會(huì)失效灼狰。比如:
SELECT * FROM user WHERE height= 180;
height為varchar類型導(dǎo)致索引失效宛瞄。
數(shù):
是函數(shù)的意思。對(duì)索引的字段使用內(nèi)部函數(shù)交胚,索引也會(huì)失效份汗。這種情況下應(yīng)該建立基于函數(shù)的索引。比如:
SELECT * FROM user WHERE DATE(create_time) = ‘2020-09-03’;
create_time字段設(shè)置索引蝴簇,那就無(wú)法使用函數(shù)杯活,否則索引失效。
空:
是Null的意思熬词。索引不存儲(chǔ)空值旁钧,如果不限制索引列是not null,數(shù)據(jù)庫(kù)會(huì)認(rèn)為索引列有可能存在空值互拾,所以不會(huì)按照索引進(jìn)行計(jì)算歪今。比如:
SELECT * FROM user WHERE address IS NULL不走索引。
SELECT * FROM user WHERE address IS NOT NULL;走索引颜矿。
建議大家這設(shè)計(jì)字段的時(shí)候寄猩,如果沒(méi)有必要的要求必須為NULL,那么最好給個(gè)默認(rèn)值空字符串骑疆,這可以解決很多后續(xù)的麻煩(切記)田篇。
運(yùn):
是運(yùn)算的意思替废。對(duì)索引列進(jìn)行(+,-泊柬,*舶担,/,!, 彬呻!=, <>)等運(yùn)算衣陶,會(huì)導(dǎo)致索引失效。比如:
SELECT * FROM user WHERE age - 1 = 20;
最:
是最左原則闸氮。在復(fù)合索引中索引列的順序至關(guān)重要剪况。如果不是按照索引的最左列開(kāi)始查找,則無(wú)法使用索引蒲跨。
快:
全表掃描更快的意思译断。如果數(shù)據(jù)庫(kù)預(yù)計(jì)使用全表掃描要比使用索引快,則不使用索引或悲。
這就是索引失效的七字口訣孙咪,請(qǐng)大家點(diǎn)贊之后默念三遍,模型數(shù)空運(yùn)最快巡语。