給開發(fā)童鞋的索引學(xué)習(xí)漫畫
【轉(zhuǎn)載說明】此文章乃@小熊 童鞋獨(dú)立創(chuàng)作的规揪,
經(jīng)@小熊允許@小峰童鞋微調(diào)并轉(zhuǎn)載的哦~
謝謝觀看~?( ′???` )比心
1诬垂、MySQL 以主鍵值構(gòu)造一棵樹榆俺,葉子節(jié)點(diǎn)存放著該主鍵值對(duì)應(yīng)的的整行數(shù)據(jù)赫舒。此為聚簇索引猿规。
2像棘、其他的索引為輔助索引夭谤,葉子節(jié)點(diǎn)存放著索引字段的值及對(duì)應(yīng)的主鍵值港粱。
3、一般情況下呕臂,單表查詢每次只能用一條索引破托。
4、where 條件字段的順序與索引順序無關(guān)歧蒋,MySQL 優(yōu)化器會(huì)自動(dòng)調(diào)整順序土砂。
5州既、對(duì)查詢 where 條件中區(qū)分度高的字段加索引。
6萝映、通過索引掃描的行數(shù)超過全表 30% 時(shí)吴叶,變?nèi)頀呙琛?/p>
7、聯(lián)合索引序臂,葉子節(jié)點(diǎn)存儲(chǔ)的順序以創(chuàng)建時(shí)指定的順序?yàn)闇?zhǔn)晤郑,因此區(qū)分度高字段的放左邊,能被多個(gè)查詢復(fù)用到的放左邊贸宏。
8、只 select 需要用到的字段磕洪,避免 select * 吭练。
9、如有必要析显,可使用 USE/FORCE/IGNORE INDEX 強(qiáng)制索引 鲫咽。
10、多表 join ,先按各表的查詢條件比較哪個(gè)開銷小谷异,從小表取出所有符合條件的分尸,到大表循環(huán)查找。
11歹嘹、以下情況無法使用到索引:
like通配符在最左如:like '%dd', not in , != , <> ,對(duì)列做函數(shù)運(yùn)算箩绍,隱式數(shù)據(jù)類型轉(zhuǎn)換, or 子句尺上。
對(duì)不確定執(zhí)行計(jì)劃的關(guān)鍵語句 select/update/delete 材蛛,上線前都務(wù)必進(jìn)行 explain
,查看索引是否合適喲~