查看sql语句是否走索引


在select窗口中,执行以下语句:

set profiling =1; -- 打开profile分析工具

show variables like '%profil%'; -- 查看是否生效

show processlist; -- 查看进程

use cmc; -- 选择数据库

show PROFILE all; -- 全部分析的类型

show index from t_log_account; ##查看某个表的索引-- 使用explain命令查看query语句的性能:

EXPLAIN select * from t_car_copy ; ##查看执行计划中的sql性能


返回如图所示,

几个字段含义分别是:

id // 选择标识符

select_type // 表示查询的类型

table // 输出结果集的表

partitions // 匹配的分区

type // 表示表的连接类型,

possible_keys // 表示查询时,可能使用的索引

key // 表示实际使用的索引

key_len // 索引字段的长度

ref // 列与索引的比较

rows // 扫描出的行数(估算的行数)

filtered // 按表条件过滤的行百分比

Extra // 执行情况的描述和说明

我们把比较重要的参数提取出来进行详细讲解一下:

    type列

表示连接类型,类型有ALL、index、range、 ref、eq_ref、const、system、NULL,这几种类型从左到右,性能越来越高。一般一个好的sql语句至少要达到range级别。all级别应当杜绝

    extra列

表示详细说明,注意该值包含十分重要的信息。一般该列存在下列值,常见的不太友好的值有:Using filesort(排序时无法使用到索引), Using temporary(表示使用了临时表存储中间结果)