1.概念:索引是優化數據庫查詢速度的重要途徑。mysql
2.索引的類型:sql
<1>.普通索引:最基本的索引類型,沒有惟一性之類的限制。數據庫
①單例索引:create index valIndex on t_tableA(val(20));ide
②多列索引:create index products_index on t_products(prod_name(20),prod_price);優化
說明:(1.)多列索引,同時查,索引生效。spa
(2.)只查prod_name(20),索引生效索引
(3.)只查prod_price,索引不生效it
聯合索引,以左邊的爲準,單獨用左邊的會生效,單獨用右邊的不會生效。table
其實總結一下:以左邊第一個或者全部會生效,其餘的狀況都不生效。class
eg.(A,B,C)三個聯合索引,A和ABC會生效,其餘的狀況下不生效。
<2>.惟一索引:和普通索引基本相同,可是全部的索引列只能出現一次,保持惟一性。
create unique index valIndex2 on t_tableB(val(20));
<3>.主鍵索引:主鍵索引是一種特殊的惟一索引,在創建主鍵時自動建立。
<4>.全文索引:語法同普通索引相同,就是能夠在文本類型列上能夠建立索引。
(全文索引能夠在varchar或text類型上建立)
3.索引的缺點:
<1>.雖然索引大大提升了查詢速度,可是會下降更新表的速度。
好比對錶的insert、update、delete操做。
由於更新表時,mysql不單單要保存數據,還要保存索引文件。
<2>.創建索引會佔用磁盤空間。若是在一個大表上建立了多種索引組合,索引文件會膨脹的很快。
4.注意事項:
<1>.索引是創建在經常使用的列上,好比你常常根據某一列(用戶名,密碼)去查數據
<2>.索引至關於字典前面的目錄。
<3>.加不加索引要權衡一下是查詢多,仍是update,insert,delete多!!!
《4》並非全部的表都適合加索引的!!
①記錄少是不要加索引!
②每次查詢的數據佔總的數量很大時,不要加索引。
③多列索引:對查詢頻率高的列放在前面。
④數據庫量很大,而且每次查詢的數據佔總量比較少時,加索引誰體會到明顯的效率!!