mysql索引
概述
索引的作用:是用于快速定位实际数据位置的一种机制。
4种类型:
主键索引,唯一索引,普通索引,全文索引。
无论任何类型,都是通过建立关键字与位置的对应的关系来实现的。以上类型的差异,是对关键字的要求不同。
关键字:记录的部分数据(某个字段,某些字段,某个字段的一部分)
普通索引:对关键字没有要求。
唯一索引:要求关键字不能重复,同时增加唯一约束。
主键索引:要求关键字不能重复,也不能为NULL。同时增加主键约束。
复合索引:一个索引通过在多个字段建立。
1,创建索引
建表时:
修改表结构时:
1.添加PRIMARY KEY(主键索引)
mysql>alter table table_name add primary key ( column )
2.添加UNIQUE(唯一索引)
mysql>alter table table_name add UNIQUE KEY (column)
3.添加INDEX(普通索引)
mysql>alter table table_name add INDEX (column)
4.添加复合索引
mysql>alter table table_name add INDEX ( column1, column2 )
2,删除索引
除了删除主键索引,其它不管什么类型索引都用以下方式
mysql>alter table table_name drop index 索引名称
3,查看索引
show index from table_name
4,创建索引注意事项
第一:较频繁的作为查询条件字段应该创建索引
select * from table_name where id= 1
第二:唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
select * from table_name where sex = '男‘
第三:更新非常频繁的字段不适合创建索引
select * from table_name where logincount = 1
第四:不会出现在WHERE子句中字段不该创建索=>会出现在where子句中的字段创建索引
5,执行计划
主要用于分析sql语句的执行情况(并不执行sql语句)得到sql语句是否使用了索引,使用了哪些索引。
语法: desc sql语句\G
6,索引的数据结构
7,索引覆盖
概述:查询字段 和 索引字段 完全一致或者 是索引字段一部分时,查询速度非常快
复合索引的索引覆盖,
给id和name创建复合索引
负面影响,增加了索引的尺寸(索引文件变大)