执行sql语句时explain一下,可以查看有没有使用了索引,有没有做全表扫描,对sql优化很有帮助

  1. id:选择标识符 id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行
  2. select_type:示查询中每个select子句的类型
  3. table:表名 可能是简称
  4. partitions:匹配的分区
  5. type:连接的类型
    • system:表中只有一行数据或者是空表,且只能用于myisam和memory表
    • const:使用唯一索引或者主键
    • eq_ref:主键、索引的范围查找
    • ref:连接的查找(join)
    • fulltext:全文索引检索
    • ref_or_null:ref + is null
    • index_merge:表示查询使用了两个以上的索引,最后取交集或者并集
    • unique_subquery:where中的in形式子查询,子查询返回不重复值唯一值
    • index_subquery:where中的in形式子查询,有重复值
    • range:索引的范围查找;
    • index:索引的扫描;
    • all:全表扫描
    • system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
  6. possible_keys:可能用到的索引
  7. key:实际使用的索引
  8. key_len:索引的长度,越短越好
  9. ref:索引的哪一列被使用了,常数较好
  10. rows:执行计划中估算的扫描行数,不是精确值
  11. filtered:按表条件过滤的行百分比
  12. extra:如何解析查询的额外信息
    • Using filesort 额外排序。看到这个的时候,查询就需要优化了
    • Using temporary 使用了临时表。看到这个的时候,也需要优化

REFERENCE

分类: 数据库

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注