提高MySQL的检索速度。
普通索引(常规索引)----单列索引 一张数据表中可以有多个常规索引。如果没有明确指明索引的类型,我们所说的索引都是指常规索引。
复合索引(组合索引) 复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要。
唯一索引 提供唯一性约束。一张表中可以有多个唯一索引。
主键索引 也称为主键,提供唯一性约束。一张表中只能有一个主键。被标志为自动增长的字段一定是主键,但主键不一定是自动增长。一般把主键定义在无意义的字段上(如:编号),主键的数据类型最好是数值。
全文索引 提高全文搜索的查询效率。
unique|fulltext为可选参数,分别表示唯一索引、全文索引
index和key为同义词,两者作用相同,用来指定创建索引
col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择
index_name指定索引的名称,为可选参数,如果不指定,默认col_name为索引值
length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度
asc或desc指定升序或降序的索引值存储
a、直接法
CREATE INDEX 索引名 ON 表名(username(length));注:如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。 b、修改表结构的方式添加索引
ALTER TABLE 表名 ADD INDEX 索引名(col_name);c、创建表同时创建索引
复合索引建立在多个字段上进行创建。
a、直接法
create index 索引名 on 表名(字段1,字段2,...);b、使用修改表结构的方式
ALTER TABLE 表名 add index 索引名(字段1,字段2,...);a、直接法
# 单个 CREATE UNIQUE INDEX 索引名 ON table_name(col_name); # 多个 CREATE UNIQUE INDEX 索引名 on table_name(col_name1,col_name2...); # 注意单个、多个指的是字段b、修改表结构的方法
# 单个 ALTER TABLE table_name ADD UNIQUE index index_name(col_name); # 多个 ALTER TABLE table_name ADD UNIQUE index index_name(col_name1,col_name2...); # 注意单个、多个指的是字段c、创建表的同时创建索引
CREATE TABLE news ( id int(11) NOT NULL AUTO_INCREMENT , title varchar(255) NOT NULL , content varchar(255) NULL , PRIMARY KEY (`id`), UNIQUE index_name_unique(title) )a、创建表的同时创建索引
CREATE TABLE news ( id int(11) NOT NULL AUTO_INCREMENT , title varchar(255) NOT NULL , content varchar(255) NULL , PRIMARY KEY (`id`) )b、创建表后再创建索引
ALTER TABLE 表名 ADD primary key(col_name);c、使用ALTER增加主键 注:主键只能作用于一个列上,添加主键索引时,需要确保该主键默认不为空(NOT NULL) 例:
ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);a、直接法
CREATE FULLTEXT INDEX 索引名 ON 表名(col_name);b、创建表的同时创建索引
CREATE TABLE table ( id int(11) NOT NULL AUTO_INCREMENT , title char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , content text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , PRIMARY KEY (`id`), FULLTEXT (content));c、修改表的结构
ALTER TABLE 表名 ADD FULLTEXT 索引名(col_name);注: 默认 MySQL 不支持中文全文检索!
或者
ALTER TABLE 表名 DROP INDEX 索引名;或者
show keys from 表名;