索引用来排序数据以加快搜索和排序操作的速度。
注意:
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