什麼是索引:
索引的概述
MySQL索引是幫助MySQL高效獲取數據的數據結構(有序)。在數據之外,數據庫系統還維護者滿足特定查找算法的數據結構,這些數據結構以某種方式引用指定的數據,這樣就可以在這些數據結構上實現高級查找算法,這種數據結構就是索引。
優點:減少查詢時間,減少IO堵塞,緩解CPU的壓力
缺點:當插入數據時,會頻繁更新索引,帶來的低效率
索引的結構
BTREE索引:最常見的索引類型,大部分都支持B樹索引
HASH:只有Memory引擎支持,R-tree:MYISAM;Full-text:全文索引
主要數據類型是BTREE:
BTREE比二叉樹查詢效率要高,因爲他的層級較少。
B+TREE的結構:
B+tree最多包含n個key,而BTREE有n-1個key
索引分類:
1、單值索引:一張表可以有多個
2、唯一索引:允許包含多個空值
3、複合索引:一個索引中包含了多個列
索引的語法:
1、可以創建時創建,也可以在創建表後再創建索引。
create [unique | fulltext | spatial] index index_name
[using index_type] # default BTREE
on table_name(index_col_name...)
index_col_name : column_name [ ( length ) ] [ ASC | DESC ]
不會對id進行創建索引,因爲MySQL的主鍵是默認帶一個主鍵索引
創建普通索引
刪除索引:
drop index index_name on table_name;
修改索引:
alter table tb_name add unique index_name(col_list);
創建的唯一索引。
索引設計原則
?=> 對查詢頻率較高,且數據量比較大。經常出現在where子句後面的字段。儘量使用唯一索引。適當就可以。使用段索引。利用最左索引。