mysql使用 【Mysql】EXPLAIN
EXPLAIN SELECT * FROM user;
总计有十二
Explain关键字是Mysql中sql优化的常用「关键字」,通常都会使用Explain来「查看sql的执行计划,而不用执行sql」,从而快速的找出sql的问题所在。
总计有十二个字段: id字段:id表示执行select查询语句的序号,一般出现在多重嵌套的查询中,它是sql执行的顺序的标识,sql按照id从大到小执行,id相同的为一组,从上到下执行。 比如explain ( select * from user where id in (select user_id from role)) 两者的id都相同,便表示sql的执行从上往下执行。 若两者的id不相同,id越大的就越先执行(一般是子查询) select_type字段: 表示该语句是简单查询、简单的子查询、from子句的子查询还是union查询 table字段: table字段表示的是查询的是哪个表 type字段: type字段表示的sql关联的类型或者说是访问的类型,从这个字段中我们可以确定这条sql查找数据库表的时候,查找记录的大概范围是怎么样的,直接就能体现sql的效率问题。 比如: system:表示表中只有一行记录 const:唯一索引或者主键索引中使用等值查询,一次索引找到记录。 eq_ref:表示使用唯一索引或者主键索引扫描作为表链接匹配条件,对于每一个索引键,表中只有一条记录与之匹配。 ref:ref与eq_ref的区别就是eq_ref使用的是唯一索引或者主键索引。 range:range使用索引来检索给定范围的行数据,一般是在where后面使用between、大于小于号等 index:表示会遍历索引树,但是出现index说明需要检查自己的索引是否使用正确。 ALL:全表查询。 possible_keys: 表示这一列查询语句可能使用到的索引 key字段: 表示的真正使用到的索引 key_len字段: 表示sql查询语句中索引使用到的字节数mysql使用,这个字节数并不是实际的长度,而是通过计算查询中使用到的索引中的长度得出来的,显示的是索引字段最大的可能长度。 ref字段: rows字段: rows表示估算的要扫描的行数。 Extra字段: Using index: 表示查询的列被索引覆盖,这个是查询性能比较高的体现,即所要查询的信息搜在索引里面可以得到,不用回表。 Using where:该属性与Using index相反,查询的列并没有被索引覆盖,where条件后面使用的是非索引的前导列。 partitions、filtered字段: partitions表示所匹配的分区;filtered表示的是查询表行所占表的百分比。 (编辑:开发网_商丘站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |