mysql索引
索引分类
1.普通索引index :加速查找
2.唯一索引
主键索引:primary key :加速查找+约束(不为空且唯一)
唯一索引:unique:加速查找+约束 (唯一)
3.联合索引
-primary key(id,name):联合主键索引
-unique(id,name):联合唯一索引
-index(id,name):联合普通索引
4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
5.空间索引spatial :了解就好,几乎不用
创建/删除索引的语法
1 #方法一:创建表时 2 CREATE TABLE 表名 ( 3 字段名1 数据类型 [完整性约束条件…], 4 字段名2 数据类型 [完整性约束条件…], 5 [UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY 6 [索引名] (字段名[(长度)] [ASC |DESC]) 7 ); 8 9 10 #方法二:CREATE在已存在的表上创建索引 11 CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 12 ON 表名 (字段名[(长度)] [ASC |DESC]) ; 13 14 15 #方法三:ALTER TABLE在已存在的表上创建索引 16 ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX 17 索引名 (字段名[(长度)] [ASC |DESC]) ; 18 19 #删除索引:DROP INDEX 索引名 ON 表名字;
创建索引
-在创建表时就创建(需要注意的几点)
create table s1(
id int ,#可以在这加primary key
#id int index #不可以这样加索引,因为index只是索引,没有约束一说,
#不能像主键,还有唯一约束一样,在定义字段的时候加索引
name char(20),
age int,
email varchar(30)
#primary key(id) #也可以在这加
index(id) #可以这样加
);
-在创建表后在创建
create index name on s1(name); #添加普通索引
create unique age on s1(age);添加唯一索引
alter table s1 add primary key(id); #添加住建索引,也就是给id字段增加一个主键约束
create index name on s1(id,name); #添加普通联合索引
2.删除索引
drop index id on s1;
drop index name on s1; #删除普通索引
drop index age on s1; #删除唯一索引,就和普通索引一样,不用在index前加unique来删,直接就可以删了
alter table s1 drop primary key; #删除主键(因为它添加的时候是按照alter来增加的,那么我们也用alter来删)

浙公网安备 33010602011771号