Mysql索引的建立與刪除

不屈小二發表於2021-06-01

1. 建立索引

1.1 使用Alter建立索引

  1. 1 新增主鍵索引

特點:資料列不允許重複,不能為null,一張表只能有一個主鍵;Mysql主動將該欄位進行排序

ALTER TABLE 表名 ADD Primary key (col);
  1. 新增唯一索引

特點:索引列是唯一的,可以null;Mysql主動將該欄位進行排序

ALTER TABLE 表名 ADD unique <索引名> (col1, col2, ...col3);
  1. 新增普通索引

特點:新增普通索引, 索引值不唯一,可為null

Alter table 表名 ADD index <索引名> (col1, col2, ...,);
  1. 新增全文索引

特點:只能在文字型別CHAR,VARCHAR, TEXT型別欄位上建立全文索引;

ALTER TABLE 表名 ADD Fulltext <索引名> (col)
  1. 新增多列索引

特點:多列是唯一的

ALTER TABLE 表名 ADD UNIQUE (col1, col2, ..., )

1.2 使用Create建立索引

語法:create index 索引名 on 表名(欄位)

  1. 新增唯一索引
create index 索引名 on table 表名(col1, col2, ..., )
  1. 新增普通索引
create unique index 索引名 on table 表名(col1, col2, ..., )

1.3 兩種建立索引方式的區別

  1. Alter可以省略索引名。如果省略索引名,資料庫會預設根據第一個索引列賦予一個名稱;Create必須指定索引名稱。

  2. Create不能用於建立Primary key索引;

  3. Alter允許一條語句同時建立多個索引Create一次只能建立一個索引

ALTER TABLE 表名 ADD Primary key (id), ADD index <索引名> (col1, col2, ...,)

1.4 索引執行效率分析

主鍵索引 > 唯一性索引 > 普通索引

2 刪除索引

  1. 第一種方式
drop index 索引名 on 表名;
  1. 第二種方式
Alter table 表名 drop index 索引名;
  1. 第三種方式
Alter table 表名 drop primary key

分析:

  1. 第三種方式只在刪除primary key中使用。因一個表只能存在一個primary key索引,則不需要指定索引名;
  2. 對於第三種方式,若沒有建立primary key索引,但表中具有一個或多個unique索引,則預設刪除第一個unique索引
  3. 若刪除表中的某列,索引會受到影響。對於多列組合的索引,如果刪除其中的某一列,則該列會從對應的索引中被刪除(刪除列,不刪除索引);多刪除組成索引的所有列,則索引將被刪除(不僅刪除列,還刪除索引)。

相關文章