EXPLAIN分析
在日常工作中,可以通过开启慢查询记录一些执行时间比较久的SQL语句。
1)将slow_query_log全局变量设置为“ON”状态。
set global slow_query_log=‘ON’;
2)设置慢查询日志存放的位置。
set global slow_query_log_file=’/var/log/mysql/slow.log’
3)设置查询超过3s就记录。
set global long_query_time=3;
执行explain命令
通过上面设置,在log文件中记录了超过3s的SQL语句,可以用explain命令来查看这些SQL语句的执行计划,查看SQL语句有没有使用索引,有没有全表扫描。
展现信息有10列:
■id:SELECT识别符。这是SELECT查询序列号。
■select_type:查询类型,主要用于区别普通查询,联合查询,子查询等的复杂查询。
■table:表示查询的表。
■type:表示MySQL在表中找到所需行的方式,又称“访问类型”。
■possible_keys:指出MySQL能使用哪个索引在该表中找到行。如果该列为NULL,说明没有使用索引,可以对该列创建索引来提高性能。
■key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。查询中如果使用覆盖索引,则该索引和查询的select字段重叠。
■key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。
■ref:表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值。
■rows:显示MySQL认为它执行查询时必须检查的行数。
■Extra:包含不适合在其他列中显示,但是十分重要的额外信息。
|