mysql常用的索引種類

2021-09-27 07:03:53 字數 2466 閱讀 8569

mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度

mysql目前主要有以下幾種索引型別:fulltext,hash,btree,rtree。

1. fulltext

即為全文索引,目前只有myisam引擎支援。其可以在create table ,alter table ,create index 使用,不過目前只有 char、varchar ,text 列上可以建立全文索引。全文索引並不是和myisam一起誕生的,它的出現是為了解決where name like 「%word%"這類針對文字的模糊查詢效率較低的問題。

2. hash

由於hash的唯一(幾乎100%的唯一)及類似鍵值對的形式,很適合作為索引。hash索引可以一次定位,不需要像樹形索引那樣逐層查詢,因此具有極高的效率。但是,這種高效是有條件的,即只在「=」和「in」條件下高效,對於範圍查詢、排序及組合索引仍然效率不高。

3. btree

btree索引就是一種將索引值按一定的演算法,存入乙個樹形的資料結構中(二叉樹),每次查詢都是從樹的入口root開始,依次遍歷node,獲取leaf。這是mysql裡預設和最常用的索引型別。

4. rtree

rtree在mysql很少使用,僅支援geometry資料型別,支援該型別的儲存引擎只有myisam、bdb、innodb、ndb、archive幾種。相對於btree,rtree的優勢在於範圍查詢

1.建立索引

#直接建立索引

#建立普通索引

create index index_name on table_name(col_name);

#建立唯一索引

create unique index index_name on table_name(col_name);

#建立普通組合索引

create index index_name on table_name(col_name_1,col_name_2);

#建立唯一組合索引

create unique index index_name on table_name(col_name_1,col_name_2);

#通過修改表結構建立索引

alter table table_name add index index_name(col_name);

2.刪除索引

#直接刪除索引

drop index index_name on table_name;

#修改表結構刪除索引

alter table table_name drop index index_name;

3.檢視索引

#檢視:

show index from `表名`;

#或show keys from `表名`;

4.其他命令

#檢視表結構

desc table_name;

#檢視生成表的sql

show create table table_name;

1.為什麼我們新增完索引查詢速度為變快

傳統的查詢方法,是按照表的順序遍歷的,不論查詢幾條資料,mysql需要將表的資料從頭到尾遍歷一遍

在我們新增完索引之後,mysql一般通過btree演算法生成乙個索引檔案,在查詢資料庫時,找到索引檔案進行遍歷(折半查詢大幅查詢效率),找到相應的鍵從而獲取資料

2.索引的代價

2.1建立索引是為產生索引檔案的,占用磁碟空間

2.2索引檔案是乙個二叉樹型別的檔案,可想而知我們的dml操作同樣也會對索引檔案進行修改,所以效能會下降

3.在哪些column上使用索引?

3.1較頻繁的作為查詢條件字段應該建立索引

3.2唯一性太差的字段不適合建立索引,儘管頻繁作為查詢條件,例如gender性別字段

3.3更新非常頻繁的字段不適合作為索引

3.4不會出現在where子句中的字段不該建立索引

滿足以下條件的字段,才應該建立索引.

a: 肯定在where條經常使用

b: 該字段的內容不是唯一的幾個值

c: 字段內容不是頻繁變化

mysql常用的索引種類

mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度 mysql目前主要有以下幾種索引型別 fulltext,hash,btree,rtree。1.fulltext 即為全文索引,目前只有myisam引擎支援。其可以在create table alter ta...

mysql索引種類(索引種類和建立索引)

一 mysql索引種類 1 加速查詢 查詢普通欄位和查詢有索引字段,哪個方式查詢速度快 根據索引來查字段速度更快 2 建立索引 為userinfo表email欄位建立索引 create index ix name on userinfo 建立欄位email索引檔案,起別名ix name為某個字段建立...

mysql 索引種類

從資料結構角度 1 b 樹索引 o log n 關於b 樹索引,可以參考 mysql索引背後的資料結構及演算法原理 2 hash索引 a 僅僅能滿足 in 和 查詢,不能使用範圍查詢 b 其檢索效率非常高,索引的檢索可以一次定位,不像b tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多...