mysql:高級:索引

什麼是索引:

索引的概述

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子句後面的字段。儘量使用唯一索引。適當就可以。使用段索引。利用最左索引。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章