索引是一種有效組合數據的方式。通過索引,可以快速快速查詢到數據庫表對象中的特定記錄,是一種提供性能的常用方式
1、關於索引
使用索引可以提高從表中檢索數據的速度,索引由表中的一個字段和多個字段生成的鍵組成。
索引按存儲類型可分為:B型樹索引(BTREE)和哈希索引。
MySQL支持6種索引,分別為普通索引、唯一索引、全文索引、單列索引、多列索引、空間索引。
過多的索引會占據大量的磁盤空間。
一下情況適合創建索引:
- 經常被查詢的字段,即在WHERE子句中經常出現的字段
- 在分組的字段,即在GROUP BY子句中出現的字段
- 存在依賴關系的子表和父表之間的聯合查詢,即主鍵或外鍵字段
- 設置唯一完整性約束的字段
2、創建表時創建普通索引
普通索引:在創建索引時,不附加任何限制條件(唯一,非空等限制),該類型的索引可以創建在任何數據類型的字段上。
語法形式:
create table table_name(
屬性名 數據類型,
……
index|key [索引名](屬性名1 [長度] [ASC|DESC])
)
3、在已經存在的表上創建普通索引
語法形式:
create index 索引名 on table_name (屬性名 [長度] [ASC|DESC]);
4、通過SQL中語句alter table創建普通索引
語法形式:
alter table table_name add index|key 索引名(屬性名 [長度] [ASC|DESC]);
5、創建表時創建唯一索引
唯一索引:在創建索引時,限制索引的值必須是唯一的。
在MySQL中,根據索引的創建方式,分為手動索引和自動索引兩種。
自動索引,是指在數據庫表里設置完整性約束時,該表會被系統自動創建索引。手動索引,是指手動在表上創建索引。當設置表的某個字段為主鍵或唯一完整性約束時,系統就會自動創建關聯該字段的唯一索引。
語法形式:
create table table_name(
屬性名 數據類型,
……
unique index|key [索引名](屬性名1 [長度] [ASC|DESC])
);
6、在已經存在的表上創建唯一索引
語法形式:
create unique index 索引名 on table_name (屬性名 [長度] [ASC|DESC]);
7、通過SQL語句alter table創建唯一索引
語法形式:
alter table table_name add unique index|key 索引名(屬性名 [長度] [ASC|DESC]);
8、刪除索引
刪除索引即刪除表中已存在的索引。之所以要刪除索引,是由於這些索引會降低更新速度,影響數據庫的性能。
語法形式:
drop index 索引名 on table_name;