最近刚过完年,产品需求暂时不算多,研发这边的一些优化的需求提上日程,其中很大一部分就是SQL优化,平时业务里面写的那些性能并不高效的SQL也都要回炉重写,但是确实很耗费时间,很多时候又要改动表结构。
首先我们在要执行的语句前面加一个Explain 再执行,就可以看到这条SQL语句的性能了。
id:
就是简单的ID标志而已,如果是一条语句就只有1,如果Explain一条SQL语句里面包含了N个子查询,ID就会到N。
select_type:
搜索的类型
SIMPLE:简单的单条搜索语句
PRIMARY:包含多条子查询SQL中的主查询语句
SUBQUERY / DEPENDENT SUBQUERY:包含在主查询语句中的子查询语句 / 包含在主查询语句中的子查询语句 且子查询依赖于主查询的(严重消耗性能!例如select * from a where id = (select id from b ) ; 这种select_type可以用union 链接查询语句进行优化)
UNION / DEPENDENT UNION:使用union链接查询 / 子查询依赖于外层查