执行计划就是sql语句在数据库中的执行情况,一般用于sql性能分析、优化。Mysql中使用explain来查看执行计划:
explain select * from student\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: student
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 2724
Extra: NULL
1 row in set (0.00 sec)
下面来介绍查询结果中各个属性的含义:
1、id
表示查询中select操作表的顺序
2、select_type
表示选择的类型,常见可选值有:SIMPLE(简单),PRIMARY(最外层),SUBQUERY(子查询中的第一个select查询)
3、type
表示访问类型,有很多种访问类型,最常见的有以下几种:ALL(全表扫描),index(索引扫描),range(范围扫描),ref(非唯一索引扫描),eq_ref(唯一索引扫描),const(常数引用),访问速度依次从慢到快。
4、table
表示查询数据所在表
5、possible_keys
表示该查询语句可能走的索引
6、key
表示该查询语句实际走的索引,包括主键索引(PRIMARY),或者自建索引的名字。
7、key_len
表示索引所使用的字节数
8、ref
表示连接匹配条件,如果走主键索引的话该值为const,全表扫描的话,为null值
9、rows
扫描行数,表示需要扫描多少行才能获取目标行数。通常,rows值越小,效率越高,大多数sql优化都在减少这个值。
10、extra
表示执行sql时的真实情况信息,常见的有:“using where”(使用where筛选),“Using temporary”(使用临时表),“Using filesort”(使用文件排序)。