定义:
索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度;
类似于图书的目录,方便快速定位,寻找指定的内容;
优点:提高查询数据的速度;
缺点:创建和维护索引的时间增加了;
索引分类:
1、普通索引
这类索引可以创建在任何数据类型中;
CREATE TABLE t_user1(id INT ,
userName VARCHAR(20),
PASSWORD VARCHAR(20),
INDEX (userName)
);
2、唯一性索引
使用UNIQUE参数可以设置,在创建唯一性索引时,限制该索引的值必须是唯一的;
CREATE TABLE t_user2(id INT ,
userName VARCHAR(20),
PASSWORD VARCHAR(20),
UNIQUE INDEX index_userName(userName)
);
3、全文索引
使用FULLTEXT参数可以设置,全文索引只能创建在CHAR,VARCHAR,TEXT类型的字段上。主要作用是提高查询较大字符串类型的速度;只有MyISAM引擎支持该索引,Mysql默认引擎不支持;
4、单列索引
在表中可以给单个字段创建索引,单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引;
5、多列索引
多列索引是在表的多个字段上创建一个索引;
CREATE TABLE t_user3(id INT ,
userName VARCHAR(20),
PASSWORD VARCHAR(20),
INDEX index_userName_password(userName,PASSWORD)
);
6、空间索引
使用SPATIAL参数可以设置空间索引。空间索引只能建立在空间数据类型上,这样可以提高系统获取空间数据的效率;只有MyISAM引擎支持该索引,Mysql默认引擎不支持;
创建索引
1、创建表的时候创建索引
CREATE TABLE表名(属性名 数据类型[完整性约束条件],
属性名 数据类型[完整性约束条件],
....
属性名 数据类型
[UNIQUE | FULLTEXT | SPATIAL ] INDEX| KEY
[别名] (属性名1 [(长度)] [ASC | DESC])
);
2、在已经存在的表上创建索引
CREATE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX索引名
ON表名(属性名[(长度)] [ ASC | DESC]);
CREATE INDEX index_userName ON t_user4(userName);
CREATE UNIQUE INDEX index_userName ON t_user4(userName);
CREATE INDEX index_userName_password ON t_user4(userName,PASSWORD);
3、用ALTER TABLE语句来创建索引
ALTER TABLE表名ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX
索引名(属性名[(长度)] [ ASC | DESC]);
ALTER TABLE t_user5 ADD INDEX index_userName(userName);
ALTER TABLE t_user5 ADD UNIQUE INDEX index_userName(userName);
ALTER TABLE t_user5 ADD INDEX index_userName_password(userName,PASSWORD);
删除索引
DROP INDEX索引名ON表名 ;
DROP INDEX index_userName ON t_user5;
DROP INDEX index_userName_password ON t_user5;