Loading

如何分析慢SQL语句

如果一条sql执行很慢的话,通常会使用MySQL自动的执行计划explain来去查看这条sql的执行情况,比如在这里面可以通过keykey_len检查是否命中了索引,如果本身已经添加了索引,也可以判断索引是否有失效的情况,第二个,可以通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描,第三个可以通过extra建议来判断是否出现了回表的情况,如果出现了,可以尝试添加索引或修改返回字段来修复。

  • possible_keys 当前sql可能会使用到的索引

  • key 当前sql实际命中的索引

  • key_len 索引占用的大小
    通过它们两个查看是否可能会命中索引

  • Extra 额外的优化建议

    Extra 含义
    Using where; Using Index 查找使用了索引,需要的数据都在索引列中能找到,不需要回表查询数据
    Using index condition 查找使用了索引,但是需要回表查询数据
  • type这条sql的连接的类型性能由好到差为NULL、system、const、eq ref、ref、range、 index、all,实际开发过程中至少保持到range类型。

    • system:查询系统中的表
    • const:根据主键查询V
    • eq_ref:主键索引查询或唯一索引查询
    • ref:索引查询
    • range:范围查询
    • index:索引树扫描
    • all: 全盘扫描
posted @ 2024-05-08 10:00  worshipone  阅读(67)  评论(0)    收藏  举报