索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构,可以提高查询速度。索引有两种存储类型
- B型树 ( BTREE ) 索引
- 哈希 ( HASH ) 索引
索引需要占用物理空间,增加删除和修改数据时,要动态地维护索引,造成数据的维护速度降低,当需要插入大量记录时,可以先删除表中的索引,然后插入数据,插入完成后再创建索引。
索引主要包含以下几种
1. 普通索引(不附加任何条件)
2. 唯一性索引(使用UNIQUE参数,主键是特殊的唯一索引)
3. 全文索引(使用FULLTEXT参数,目前只有MyISAM存储引擎支持)
4. 单列索引(在表中的单个字段上创建)
5. 多列索引(在表中的多个字段上创建)
6. 空间索引(使用SPATIAL参数,目前只有MyISAM存储引擎支持)
索引的设计原则
1. 选择唯一性索引
2. 为经常需要排序、分组和联合操作的字段建立索引
3. 为经常作为查询条件的字段建立索引
4. 限制索引的数目
5. 尽量使用数据量少的索引
6. 尽量使用前缀来索引
7. 删除不再使用或者很少使用的索引
创建索引
[UNIQUE | FULLTEXT | SPATIAL] INDEX|KEY [别名] (属性名1 [(长度)] [ASC | DESC])
如 UNIQUE INDEX index2_id(id ASC)
在已有的表上创建索引
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名 ON 表名 (属性名1 [(长度)] [ASC | DESC])
删除索引
DROP INDEX 索引名 ON 表名