索引用來排序數據以加快搜索和排序操作的速度。
注意:
1. 索引改善檢索操作的性能,但降低了數據插入、修改和刪除的性能。在執行這些操作時,DBMS必須動態的更新索引。
2. 索引數據可能有佔用大量的存儲空間。
3. 並非所有數據都適合做索引。取值不多的數據(如省)不如具有更多可能值(如姓或名)的數據,能通過索引得到那麼多的好處。
4. 索引用於數據過濾和數據排序。如果你經常以特定的順序排序數據,則該數據可能適合做索引。
5. 可以在索引中定義多個列。
普通索引
創建索引
CREATE INDEX prod_name_ind ON Products (prod_name);
索引必須唯一命名。
修改表結構添加索引
ALTER TABLE Products ADD INDEX prod_name_ind(prod_name);
創建表時直接指定索引
CREATE TABLE Products
(
prod_id char(10) NOT NULL ,
vend_id char(10) NOT NULL ,
prod_name char(255) NOT NULL ,
prod_price decimal(8,2) NOT NULL ,
prod_desc text NULL
INDEX [prod_name_idx] (prod_name)
);
刪除索引
DROP INDEX[prod_name_idx] ON Product;
或者
ALTER TABLE Product DROP INDEX prod_name_idx;
唯一索引
它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種創建方式:
創建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))
修改表結構
ALTER table mytable ADD UNIQUE [indexName] (username(length));
創建表的時候直接指定
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
UNIQUE [indexName] (username(length))
);
顯示索引信息
你可以使用 SHOW INDEX 命令來列出表中的相關的索引信息。可以通過添加 \G 來格式化輸出信息。
嘗試以下實例:
SHOW INDEX FROM table_name; \G