1、索引的概念
数据库索引,它是对数据库表一列或多列的值进行排序后的一种结构。
1.1 普通索引
普通索引是由KEY
或INDEX
定义的索引,它是MySQL中的基本索引类型,可以创建在任何数据类型中,其值是否唯一和非空由字段本身的约束条件所决定。
1.2 唯一性索引
唯一性索引是由UNIQUE
定义的索引,该索引所在字段的值必须是唯一的。
1.3 全文索引
全文索引是由FULLTEXT
定义的索引,它只能创建在CHAR、VARCHAR或TEXT类型的字段上,而且,现在只有MyISAM存储引擎支持全文索引。
1.4 单列索引
单列索引指的是在表中单个字段上创建索引,它可以是普通索引、唯一性索引或全文索引,只要保证该索引只对应表中一个字段即可。
1.5 多列索引
多列索引指的是在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。
1.6 空间索引
空间索引是由SPATIAL
定义的索引,它只能创建在空间数据类型的字段上。空间数据类型有4种:GEOMETRY、POINT、LINESTRING和POLYGON 。
2、创建索引
2.1 创建表的时候创建索引
语法格式:
create table 表名(字段名 数据类型 [完整性约束条件],
字段名 数据类型 [完整性约束条件],
···
字段名 数据类型
[UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY
[别名] (字段名1 [(长度)]) [ASC | DESC]
);
ASC和DESC分别表示升序和降序排列。
2.2 使用CREATE INDEX 语句在已经存在的表上创建索引
语法格式:
CREATE [ UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名
ON 表名(字段名 [(长度)]) [ASC | DESC]
);
2.3 使用ALTER TABLE 语句在已经存在的表上创建索引
语法格式:
ALTER TABLE 表名 ADD [ UNIQUE | FULLTEXT | SPATIAL] INDEX
索引名(字段名 [(长度)]) [ASC | DESC]
);
3、删除索引
3.1 使用 DROP INDEX 删除索引
语法格式:DROP INDEX 索引名 ON 表名;