Mysql索引的創建與刪除

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. 若刪除表中的某列,索引會受到影響。對於多列組合的索引,如果刪除其中的某一列,則該列會從對應的索引中被刪除(刪除列,不刪除索引);多刪除組成索引的所有列,則索引將被刪除(不僅刪除列,還刪除索引)。