MySQL中,所有的数据类型都可以建立索引,包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等。
索引的含义和特点
BTREE 索引,HASH 索引
优点:提高查询,联合查询,分级和排序的时间
缺点:索引占空间,维护(创建,更新,维护)索引时需要耗费时间
索引的分类
1、普通索引
不加任何限制条件
2、唯一性索引
使用 UNIQUE 参数
3、全文索引
使用 FULLTEXT 参数,只能创建在 CHAR,VARCHAR,TEXT 类型的字段上,只有 MyISAM 存储引擎支持全文索引。
4、单列索引
在一个字段上建立的普通索引,唯一性索引或全文索引
5、多列索引
在多个字段上建立的普通索引,唯一性索引或全文索引
6、空间索引
使用 SPATIAL 参数,只有 MyISAM 存储引擎支持空间索引,必须建立在空间数据类型上,且必须非空, 初学者很少用到。
索引的设计原则
1、选择唯一性索引
2、为经常需要排序、分组和联合操作的字段建立索引
如 ORDER BY、GROUP BY、DISTINCT,UNION 等操作的字段,特别是排序
3、为常作为查询条件的字段建立索引
4、限制索引的数目
避免过多地浪费空间
5、尽量使用数据量少的索引
6、尽量使用前缀来索引
如指索引 TEXT 类型字段的前 N 个字符(
Oracle 中有函数索引,这个是不是相当亍left(field, n)式的函数索引?!
7、删除不再使用或者很少使用的索引
创建索引
创建表时创建索引
创建普通索引
创建唯一性索引
使用 UNIQUE 参数
创建全文索引
使用 FULLTEXT 参数,只能创建在 CHAR,VARCHAR,TEXT 类型的字段上,只有 MyISAM 存储引擎支持全文索引。
创建单列索引
在一个字段上建立的普通索引,唯一性索引或全文索引
创建多列索引
在多个字段上建立的普通索引,唯一性索引或全文索引
创建空间索引
使用 SPATIAL 参数,只有 MyISAM 存储引擎支持空间索引,必须建立在空间数据类型上,且必须非空, 初学者很少用到。
在已经存在的表上创建索引
以上是在已经存在的表上创建普通索引,创建其他类型索引参照“创建表时创建索引”,在index前加适当的参数即可。
用 ALTER TABLE 语句来创建索引
ALTER TABLE 表名 ADD[UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 (属性名[(长度)] [ASC|DESC]);
删除索引
DROP
DROP INDEX 索引名 ON 表名;
ALTER