索引原則
(1) 必須要有主鍵,如果沒有可以做為主鍵條件的列,創(chuàng)建無關(guān)列
(2) 經(jīng)常做為where條件列 order by group by join on, distinct 的條件(業(yè)務(wù):產(chǎn)品功能+用戶行為)
(3) 最好使用唯一值多的列作為索引,如果索引列重復(fù)值較多,可以考慮使用聯(lián)合索引
(4) 列值長度較長的索引列,我們建議使用前綴索引.
(5) 降低索引條目,一方面不要創(chuàng)建沒用索引,不常使用的索引清理,percona toolkit(xxxxx)
(6) 頻繁更新的列,不適合做索引列。
(7) 索引維護(hù)要避開業(yè)務(wù)繁忙期,pt-tools
面試題:有索引,為什么查詢效率還很低?
- 有索引沒走
- 聯(lián)合索引沒有完全覆蓋
- 索引失效或者統(tǒng)計信息不真實
- 索引列的重復(fù)值太多
如何排查和解決此類問題:
- 先看這個語句的執(zhí)行計劃
table,type,key_len判斷聯(lián)合索引的覆蓋長度,extra,額外排序
rows 重復(fù)值 ------>- 沒有索引建立索引,改語句。
檢查索引
optimize table city;