索引的含义与特点
索引是创建在表上的,对数据库表的一列或者多列的值进行排序的一种结构,可以提高查询的速度。通常有BTREE 和 HASH 两种储存类型。
索引的分类
- 普通索引
- 唯一性索引(索引值是UNIQUE)
- 全文索引 (只有MyISAM支持,索引字段必须是CHAR ,CHARVAR ,TEXT类型)(FULLTEXT)
- 单列索引
- 多列索引(只有使用了索引中的第一个字段时才会触发索引)
- 空间索引(SPATIAL,只有MyISAM支持)
建立索引的原则
- 选择唯一性索引
- 为经常需要 ORDER BY ,GROUP BY ,DISTINCT ,UNION 的操作的字段建立索引,避免排序操作。
- 为经常作为查询条件的字段建立索引
- 限制索引的数目
- 尽量使用数据量少的索引(使用char(10)而不是char(100))
- 尽量使用前缀索引,不使用text,blog的全部来索引
- 删除使用很少或者不使用的索引
创建索引
- 创建表的时候创建
CREAETE TABLE TABLENAME(
属性名1 数据类型 [完整性约束],
...
[UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY
[别名] (属性名1 [(长度)] [ASC |DESC])
);
ASC :升序排列
DESC: 降序排列
2. 在已经存在的表上创建索引
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名
ON 表名 (属性名 [(长度)] [ASC |DESC])
- 使用ALTER TABLE 创建
ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL] INDEX
索引名 (属性名 [(长度)] [ASC |DESC])
- 删除索引
DROP INDEX 索引名 ON 表名;