含義:索引是一種數(shù)據(jù)結(jié)構(gòu)溢吻,可以理解為“排好序方便快速查找的數(shù)據(jù)結(jié)構(gòu)”钥勋。
建立索引的優(yōu)勢:通過建立索引惭适,可以加快數(shù)據(jù)的檢索效率康栈。
建立索引的劣勢:降低對表的操作速度(如INSERT,UPDATE,DELETE)递递,因?yàn)閷Ρ頂?shù)據(jù)進(jìn)行操作喷橙,數(shù)據(jù)庫需要對索引進(jìn)行優(yōu)化啥么;其次索引也要占磁盤空間,它需要記錄實(shí)體表被指向的字段贰逾。
索引分類:單值索引悬荣,唯一索引,復(fù)合索引
基本語法:
創(chuàng)建索引:create index index_name on table_name(column...)
刪除索引:drop index index_name on table_name
查看索引:show index from table_name
修改索引:alter table table_name add primary key(column):添加主鍵索引
? ? ? ? ? ? ? ? ? alter table table_name add unique index_name(column...):添加唯一索引
? ? ? ? ? ? ? ? ? alter table table_name add index_name(column...):添加普通索引
索引的優(yōu)化
1:表中的主鍵需要建索引(默認(rèn)創(chuàng)建)
2:需要頻繁查詢的字段
3:邏輯外鍵關(guān)系需要建索引
4:表記錄太少不適合建索引
5:表的增刪改操作頻繁不適合建索引
6:mysql在使用不等于(疙剑!=或者<>)的時候無法使用索引導(dǎo)致全表掃描
7:is null氯迂, is not null也無法使用索引
8:like以通配符開頭('%abc...')mysql索引失效會變成全表掃描的操作
9:字符串不加單引號索引失效
10:少用or,用它來連接會索引失效
11:不在索引列上做任何操作(計(jì)算言缤,函數(shù)嚼蚀,(自動or手動)類型轉(zhuǎn)換,會導(dǎo)致索引丟失轉(zhuǎn)而全表掃描)
12:盡量使用覆蓋索引(只訪問索引的查詢(索引和查詢列一致))管挟,減少select *
13:單鍵/組合索引的選擇問題(高并發(fā)下傾向創(chuàng)建組合索引)
14:查詢中排序的字段轿曙,排序的字段若通過索引去訪問將大大提高排序速度
15:查詢中排序的字段,排序的字段若通過索引去訪問將大大提高排序速度