MySQL优化-》执行计划和常见索引
MySql的explain执行计划
explain是一个Mysql性能显示的工具,它显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。在开发当中我们一般用explain来查看索引的使用情况,explain你可以把它理解成为一个查看索引使用情况的工具
语法规则:explain [select 语句]
type=const 表示通过索引一次就找到了
key=primary 表示使用了主键
type=all 表示为全表扫描
key=null 表示没用到索引
type=ref 这时认为是多个匹配行,在联合查询中,一般为REF
查看索引的方法
1.语法规则:show index from [表名称]
2.语法规则:show create table from [表名称]
在Mysql当中常见的索引使用有4种,分别为:
1.主键索引( Primary Key )
主键索引的原则和场景:
在开发当中我们往往需要对一些重复性的数据进行区分,那么这时我们就需要使用主键索引,主键索引既不能为null,也不能重复,更不能为空字符串。在id字段中出现最多,通常
在id字段中出现最多,通常还会配合自增长一起使用,主键索引也是所有索引当中查询速度最快的索引
添加主键:
语法规则:alter table 表名 add primary key(字段名称)
删除主键:
主键含有自动增长的特性,需要首先删除自增长的属性,否则就会报错
删除自动增长:alter table 表名 modify id int unsigned
然后:alter table 表名 drop primary key
添加自动增长:
语法规则:Alter table 表名 modify 字段名 字段类型 auto_increment
2.普通索引( Key )
普通索引的原则和场景:
在开发当中,如果我们仅仅是为了提升查询的效率但不需要用到任何的约束性行为,那么就可以使用普通索引
添加普通索引:
语法规则:create index 索引名称 on 表名称(字段名称)
删除普通索引:
语法规则: alter table 表名 drop index 索引的名称
3.唯一性索引(Unique)
唯一索引的原则和场景:
在开发当中,有时我们在网站使用用户名进行注册需要对用户进行唯一性约束,这时唯一性索引就可以起到约束的作用,同时唯一索引也能提高数据查找的速度,因此唯一性索引在开发中使用十分广泛
添加唯一索引:
语法规则:create unique index 索引的名称 on 表名(字段名称)
删除唯一索引:
语法规则: alter table 表名 drop index 索引的名称
唯一性索引的注意事项
1.在唯一索引当中,null是可以重复的
2.在唯一索引当中空字符串是不能重复的
唯一索引和主键的区别是什么?
答:主键索引不能是null也不能是空字符串且不能重复,而唯一索引可以为null,并且可以重复,但唯一索引如果是空字符串那么它是不能重复的,但它允许添加一次。
4.全文索引(FullText):这个索引其实被sphinx取代了其地位