查看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(表示使用了临时表存储中间结果)