1.根据慢日志(记录执行的慢的sql的日志)定位慢查询sql
SHOW VARIABLE LIKE '%query%'
SHOW STATUS LIKE 'slow_queries' 查询慢查询有几条
SET GLOBAL slow_query_log = ON 开启慢查询
SET GLOBAL long_query_time = 1 设置慢查询记录时间为1s
也可以在my.ini中寻找相应的字段进行修改
然后按照slow_log的存放日志去查找慢日志文件,分析对应的慢查询语句(注:只有DQL可能会进入慢查询中,DCL、DML、DDL则不会)
2.使用explain等工具分析sql
直接在SQL语句前面加Explain,用来分析 SELECT 查询语句,可通过Explain 结果来优化查询语句。
select_type : 查询类型,有简单查询、联合查询、子查询等
key : 使用的索引
rows : 扫描的行数
type字段:
null,system,const,eq_ref,ref,range,index,all
1)null:查询不需要访问表或索引
2)system:系统查询
3)const:常量查询,即在整个查询过程中最多只有一行匹配(主键查询)
4)eq_ref:唯一键索引
5)ref:非唯一索引访问
6) range:以范围的形式扫描
7) index:按索引次序扫描,先读索引,再读实际的行,结果还是全表扫描,主要优点是避免了排序。因为索引是排好的
8)all : 即全表扫描
Extra字段: