分析查询速度慢
- 记录慢查询日志,使用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快