深入理解MySQL_10 Explain的用法

发布时间:2026/7/9 8:52:13
深入理解MySQL_10 Explain的用法 Explain的用法explain关键字可以模拟MySQL优化器执行SQL语句可以很好的分析SQL语句或表结构的性能瓶颈。1、id字段select查询的序列号包含一组数字表示查询中执行select子句或操作表的顺序2、select_type字段1SIMPLE简单查询不包含子查询或Union查询的sql语句。2PRIMARY查询中若包含任何复杂的子部分最外层查询则被标记为主查询。3 SUBQUERY在select或where中包含子查询。4UNION若第二个select出现在uion之后则被标记为UNION。6UNION RESULT从UNION表获取结果的合并操作。3、type字段最好到最差备注掌握以下10种常见的即可NULLsystemconsteq_refrefref_or_nullindex_mergerangeindexALL4、table字段表示数据来自哪张表5、possible_keys字段显示可能应用在这张表中的索引一个或多个查询涉及到的字段若存在索引则该索引将被列出但不一定被实际使用6、key字段实际使用到的索引如果为NULL则没有使用索引查询中若使用了覆盖索引查询的列刚好是索引则该索引仅出现在key列表7、key_len字段表示索引中使用的字节数可通过该列计算查询中使用的索引的长度在不损失精确度的情况下长度越短越好key_len显示的值为索引字段最大的可能长度并非实际使用长度即key_len是根据定义计算而得不是通过表内检索出的8、ref字段哪些列或常量被用于查找索引列上的值9、rows字段根据表统计信息及索引选用情况大致估算出找到所需的记录所需读取的行数10、partitions字段匹配的分区11、filtered字段它指返回结果的行占需要读到的行(rows列的值)的百分比12、Extra字段该列包含不适合在其它列中显示但十分重要的额外信息