分析查询速度慢

  • 记录慢查询日志,使用pt-query-digest工具分析
  • 使用show profile ,开启:set profiling=1;查看:show profiles;单句query详情:show profile for query x;
  • 使用show status 会返回语句计数器,show global status查看全局计数
  • show processlist 观察线程状况
  • explain 分析单条SQL语句,

查询常见问题

  • 访问数据过多
  • 检索的行或列太多
  • MYSQL在分析不必要的数据行

常规优化查询

  • 使用limit控制量
  • 指定列明
  • 缓存数据
  • 常用搜索条件设置索引
  • 改变数据表结构,修改表的范式 
  • 扫描数据比响应快,应当尽量减少查询数

特定类型优化查询

  • 优化count查询,count(*)比count(列名)更快,增加汇总表
  • 优化关联查询,在on或者using字句列上加索引,group by和order by中只有一个表的列,这样才有可能使用索引
  • 优化group by和distinct,添加索引,不需要排序的情况添加order by NULL
  • 优化limit分页,可以记录id,用id做查询条件
  • 优化uinon,union all比union快
12-22 03:35