索引:
優勢:在數據表中有海量數據時能幫助快速查詢記錄。
劣勢:索引本身也是一張表,佔用磁盤空間,當進行update insert delete操作時耗時更長,因爲需要維護索引表
索引的分類:
單值索引:依賴單個列建立的索引,一張表可以有多個單值索引;
唯一索引:索引列的值必須唯一,允許出現NULL
複合索引:一個索引依賴表的多個列
全文索引:只有在myisam的引擎上才能使用,只能在char,varchar,text類型字段上建立索引;
空間索引:對空間數據類型字段建立的索引;
索引操作:
創建:create index index_name on table(列名1,列名2);
alter table tab_name add index idx_name(列名1,列名2);
刪除:drop index index_name on table_name;
查看:show index from table_name;
自動創建索引:當表定義了主鍵時會自動創建對應的唯一索引;
當表定義了外鍵時,會自動創建普通索引;
explain:分析語句
explain select * from emp where id = 1 \G;
的結果中如果key爲NULL,表示本次執行沒有依賴索引查詢。
常見的創建索引的場景:
1.主鍵自動創建唯一索引;
2.頻發作爲查詢條件的字段;
3.與其他表中建立外鍵的字段;
4.where條件後不會跟的字段不用創建索引;
5.頻發更新的字段不適合創建索引;
6.排序字段和分組字段適合創建索引。