Mysql索引的創建與刪除
- 2021 年 6 月 1 日
- 筆記
- create和alter索引, MySQL, MySQL資料庫, 索引
1. 創建索引
1.1 使用Alter創建索引
- 1 添加主鍵索引
特點:數據列不允許重複,不能為null,一張表只能有一個主鍵;Mysql主動將該欄位進行排序
ALTER TABLE 表名 ADD Primary key (col);
- 添加唯一索引
特點:索引列是唯一的,可以null;Mysql主動將該欄位進行排序
ALTER TABLE 表名 ADD unique <索引名> (col1, col2, ...col3);
- 添加普通索引
特點:添加普通索引, 索引值不唯一,可為null
Alter table 表名 ADD index <索引名> (col1, col2, ...,);
- 添加全文索引
特點:只能在文本類型CHAR,VARCHAR, TEXT類型欄位上創建全文索引;
ALTER TABLE 表名 ADD Fulltext <索引名> (col)
- 添加多列索引
特點:多列是唯一的
ALTER TABLE 表名 ADD UNIQUE (col1, col2, ..., )
1.2 使用Create創建索引
語法:create index 索引名 on 表名(欄位)
- 添加唯一索引
create index 索引名 on table 表名(col1, col2, ..., )
- 添加普通索引
create unique index 索引名 on table 表名(col1, col2, ..., )
1.3 兩種創建索引方式的區別
-
Alter可以省略索引名。如果省略索引名,資料庫會默認根據第一個索引列賦予一個名稱;Create必須指定索引名稱。
-
Create不能用於創建Primary key索引;
-
Alter允許一條語句同時創建多個索引;Create一次只能創建一個索引
ALTER TABLE 表名 ADD Primary key (id), ADD index <索引名> (col1, col2, ...,)
1.4 索引執行效率分析
主鍵索引 > 唯一性索引 > 普通索引
2 刪除索引
- 第一種方式
drop index 索引名 on 表名;
- 第二種方式
Alter table 表名 drop index 索引名;
- 第三種方式
Alter table 表名 drop primary key
分析:
- 第三種方式只在刪除primary key中使用。因一個表只能存在一個primary key索引,則不需要指定索引名;
- 對於第三種方式,若沒有創建primary key索引,但表中具有一個或多個unique索引,則默認刪除第一個unique索引;
- 若刪除表中的某列,索引會受到影響。對於多列組合的索引,如果刪除其中的某一列,則該列會從對應的索引中被刪除(刪除列,不刪除索引);多刪除組成索引的所有列,則索引將被刪除(不僅刪除列,還刪除索引)。