确认慢查询日志开启:首先要确保数据库已经开启了慢查询日志功能。在 MySQL 中,可以通过查看设置文件(如 my.cnf 或 my.ini)中的相干设置参数来确认,或者利用 SHOW VARIABLES LIKE 'slow_query_log'; 命令查看慢查询日志是否开启以及日志文件的存储位置。如果没有开启,需要按照数据库的设置方法举行开启,并设置符合的查询时间阈值(例如,long_query_time 参数),超过该阈值的 SQL 语句会被记录到慢查询日志中。
获取慢查询日志文件:根据设置文件中指定的日志文件路径,找到慢查询日志文件。如果不确定文件路径,可以再次利用 SHOW VARIABLES LIKE 'slow_query_log_file'; 命令来查看。
查看执行筹划:利用 EXPLAIN 命令查看 SQL 语句的执行筹划。EXPLAIN 会返回关于 MySQL 如那边理该语句的信息,包括如何连接表、以何种顺序连接表以及是否利用了索引等。重点关注 type、rows、filtered、extra、key 等字段:
type:表示连接范例,性能从好到坏依次为 system > const > eq_ref > ref > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all。例如,all 表示全表扫描,通常性能较差,如果可能应只管制止。
rows:表示 MySQL 估算要找到所需记录需要读取的行数,对于 InnoDB 表,此数字是估计值。
filtered:是一个百分比的值,表示表中符合条件的记录数的比例。
extra:包含有关 MySQL 如何分析查询的其他信息,例如 using filesort(表示按文件排序,一样平常在指定的排序和索引排序不划一时出现)、using index(表示是否利用了覆盖索引)、using temporary(表示是否利用了暂时表,性能较差,需要重点优化)、using where(表示利用了 WHERE 条件过滤)、using index condition(MySQL 5.6 之后新增的索引下推,在存储引擎层举行数据过滤,淘汰回表的数据)等。