Mysql索引的建立,檢視,刪除。

2021-10-09 10:26:01 字數 2174 閱讀 5200

1、索引的型別與分類

索引的型別:

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

fulltext

即為全文索引,之前只有myisam引擎支援。其可以在create table ,alter table ,create index 使用,不過目前只有 char、varchar ,text 列上可以建立全文索引。mysql5.6以後,innodb就可以使用全文索引了。

hash

hash索引可以一次定位, 雜湊演算法複雜度為o(1)。但是,這種高效是有條件的,即只在「=」和「in」條件下高效,對於範圍查詢、排序及組合索引仍然效率不高。

btree

btree索引就是一種將索引值按一定的演算法,b+樹將所有的資料都存放在葉子節點,演算法複雜度為o(log n),每次查詢都是從樹的入口root開始,依次遍歷node,獲取leaf。這是mysql裡預設和最常用的索引型別。

rtree

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

索引種類:

普通索引

僅加速查詢

唯一索引

索引列的值必須唯一,但允許有空值

主鍵索引

索引列的值必須唯一,不允許有空值,但是表中只有乙個

組合索引

多列值組成乙個索引,專門用於組合搜尋,其效率大於索引合併

2、索引的建立

在執行create table語句時可以建立索引,也可以單獨用create index或alter table來為表增加索引。

alter table:

alter table用來建立普通索引、unique索引、primary key索引或全文索引。

普通索引

alter table tb_name add index index_name(column_list);

新增普通索引, 索引值可以出現多次。

唯一索引

alter table tb_name add unique index_name(column_list);

這條語句建立索引的值必須是唯一的(除了null外,null可能會出現多次)

主鍵索引

alter table tb_name add primary key(column_list);

該語句新增乙個主鍵,這意味著索引值必須是唯一的,且不能為null

全文索引

alter table tb_name add fulltext index_name(column_list);

該語句指定了索引為fulltext, 用於全文索引。

create index:

create [unique|fulltext|spatial] index index_name [using index_type] on tbl_name(column_list);

如果不選擇引數,那麼預設就是普通索引,btree索引。

普通索引

create index index_name on table(column(length));

唯一索引

create unique index indexname on table(column(length));

全文索引

create fulltext index index_content on article(content);

3、索引的檢視

show index from 《表名》 [ from 《資料庫名》]

4、索引的刪除

drop index 《索引名》 on 《表名》

5、索引失效的情況

1.如果條件中有or,只有一部分條件有or,索引也不會生效,如果想索引生效的話,可以將所有的條件都加上索引。

2.復合索引要符合最左原則。

3.like查詢是以%開頭。

4.需要型別轉換的,比如列字段是字串型別的,不加分號』 ',把他當作int型別,索引會失效,因為如果是字串的字段建立索引,mysql會把字串轉成int再建立索引(注意:字串』123』不一定會轉成int123)所以索引會失效。

5.當全表掃瞄速度比索引速度快時,mysql底層優化,會使用全表掃瞄,此時索引失效。

MySQL索引 檢視 建立 刪除

1 索引型別 建立索引時,可規定索引能否包含重複值。如不包含,則索引應建立為primary key 或 unique 索引。對於單列惟一性索引,這保證單列不包含重複的值。對於多列惟一性索引,保證多個值的組合不重複。primary key 索引和 unique 索引非常類似。事實上,primary k...

MySQL索引 檢視 建立 刪除

1 索引型別 建立索引時,可規定索引能否包含重複值。如不包含,則索引應建立為primary key 或 unique 索引。對於單列惟一性索引,這保證單列不包含重複的值。對於多列惟一性索引,保證多個值的組合不重複。primary key 索引和 unique 索引非常類似。事實上,primary k...

MySQL索引 檢視 建立 刪除

1 索引型別 建立索引時,可規定索引能否包含重複值。如不包含,則索引應建立為primary key 或 unique 索引。對於單列惟一性索引,這保證單列不包含重複的值。對於多列惟一性索引,保證多個值的組合不重複。primary key 索引和 unique 索引非常類似。事實上,primary k...