MySQL支持6种索引:普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引
索引的创建有利有弊,可以提高查询速度,但过多的创建索引则会占据许多磁盘空间
以下情况时候创建索引:
经常被查询的字段,即在WHERE子句中出现的字段
在分组的字段,即在GROUP BY子句中出现的字段
存在依赖关系的子表和父表之间的联合查询,即主键或外键字段
设置唯一完整性约束的字段
以下不适合创建索引:
查询中很少使用的字段
拥有很多重复值的字段
创建索引:mysql的存储引擎对每个表至少支持16个索引
创建表时创建普通索引(普通索引即在创建索引时,不附加任何限制条件):
INDEX|KEY 索引名 (属性名1 (长度) ASC|DESC) INDEX index_de (de)
在已经存在的表上创建普通索引:
CREATE INDEX 索引名 ON 表名 (属性名 (长度) ASC|DESC) CREATE INDEX index_de ON t_de (de)
通过SQL语句ALTER TABLE创建普通索引:
ALTER TABLE tablename ADD INDEX|KEY 索引名 (属性名 (长度) ASC|DESC) ALTER TABLE t_de ADD INDEX index_de (de)
自动索引:表会被系统自动创建索引,当表中某个字段设置主键或唯一完整性约束,系统会自动创建关联该字段的唯一索引
手动索引:手动在表上创建索引
唯一索引:创建索引时,限制索引的值必须是唯一的,在INDEX 前加上UNIQUE
UNIQUE INDEX 索引名 (属性名 (长度) ASC|DESC)
全文索引:主要关联在数据类型为CHAR,VARCHAR,TEXT的字段上,以便能够更加快速的查询数据了较大的字符串类型字段
FULLTEXT INDEX 索引名 (属性名 (长度) ASC|DESC)
多列索引:创建索引时,所关联的字段不是一个字段,而是多个字段,查询条件中只有使用了所关联字段的第一个字段,多列索引才会被使用
INDEXT 索引名 (属性1 (长度) ASC|DESC, 属性2.。。)
删除索引:
DROP INDEX index_name ON table_name