慢查询优化
- 是否检索大量超过需要的数据。访问太多的行和列
- mysql服务器层是否分析大量超过需要的数据
典型错误(超过实际需要的数据,请求了不需要的数据)
- 查询不需要的记录(使用limit,舍弃大部分数据)
- 多表关联返回所有列(获取所需要的列)
- 总是使用select*(提高代码复用性,使用缓存机制)
- 多次查询相同的数据(缓存解决)
扫描额外的记录
查询开销指标 在慢日志记录
- 响应时间:服务时间+排队时间(等待资源时间)
- 扫描行数:重要指标 可能扫描多行生产结果集的一行
- 返回行数
访问类型
explain语句type列说明访问类型,最好使用索引(ref)
重构select方式
- 一个复杂查询还是多个查询(主要是Mysql响应较慢)
- 切分查询(删除语句可能锁住数据,占用资源等,可用delete limit 返回删除结果)
- 分解关联查询