1、概念:创建在数据表上,对表的一列或多列进行排序,用于提高查询速度。
2、每个表至少支持16条索引,不同引擎所支持的索引上限不同。
3、优点:
a) 只查询索引列。
b) 查询时O(1) (hash)或 O(logB(n)) (b-tree)复杂度。
4、缺点:创建、维护索引耗费时间。
5、索引分类
a) 普通索引:无任何显示条件。
b) 唯一性索引:索引的元素(值、value)必须是唯一的,不可出现重复。
c) 全文索引:只能创建在char、varchar、text类型上,MyISAM引擎支持。
d) 单列索引:在单个字段(属性)上创建索引。
e) 多列索引:在多个字段(属性)上创建索引。
f) 空间索引:只能创建在geometry、linestring、polygon类型上,MyISAM引擎支持。
6、索引的设计原则
a) 使用唯一性索引,O(1)的查询复杂度。
b) 为经常需要排序、分组、联合的字段建立索引。
c) 严格限制索引数量,只建立必要的索引,删除无用的索引。
d) 使用数据量少的索引(字段的长度越小越好)。
e) 如果字段长度很大,使用前缀索引。
7、创建表时,直接创建索引。
CREATE TABLE 表名 (属性名 数据类型 [完整性约束],
属性名 数据类型 [完整性约束],
... ...
属性名 数据类型 [完整性约束],
[UNIQUE | FULLTEXT | SPATIAL]
INDEX | KEY
[索引名]
(属性名1[(长度)] [ASC | DESC])
);
UNIQUE:唯一性索引
FULLTEXT:全文索引
SPATIAL:空间索引
INDEX | KEY:指定字段为索引字段,INDEX和KEY作用相同
索引别名:字面上的意思
(属性名1[(长度)] [ASC | DESC]):指定要索引的列,ASC为正序,DESC为倒序
8、 在已有的表上创建索引
a) 方法1
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名
ON 表名(属性名 [(长度)] [ASC | DESC]);
b) 方法2
ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL] INDEX
索引名(属性名 [(长度)] [ASC | DESC]);
9、删除索引
DEOP INDEX 索引名 ON 表名;
原文:http://www.cnblogs.com/vrg0/p/6668853.html