MySQL LeftJoin优化未果问题
2017-08-07 14:49
204 查看
MySQL 优化未果解决SQL查询慢的方案
场景再现
前几天遇到一个SQL优化的问题,场景是这样,有两个表A表和B表,AB表的关系是一对多的关系。A表数据是8万多,B表数据是几千多。现在要执行一个SQL,意思如下:select a.id,b.time from a left join (select aid, max(b.time) as time from b group by aid) as db on a.id = b.aid
分页使用的是MyBatis的分页插件PageHelper,执行完成这条SQL大概是60s,开启了MySQL 缓存,AB表都建 了索引。(但是没起作用)由于我对索引研究不深,几番尝试之下,索引还是没能起作用。
解决方案
方案一重写分页,每次取15条,然后总条数只统计主表A表。前台的过滤条件都放到主表去筛数据,速度没问题了,但是当前台过滤条件有从表B表的字段时,这种方案就不行了。
select a.id,b.time from (select a.id from a where .... limit 0,15) as a left join (select aid, max(b.time) as time from b group by aid) as db on a.id = b.aid
方案二
或许投机取巧了,优化表结构,主表A表增加字段time,将max(b.time)放到A表里。最后正常从A表拿数据。
相关文章推荐
- MySQL学习笔记之十八 优化之数据类型问题
- 如何优化Linux下MySQL 5.0【涉及discuz论坛数据库too many connections问题】
- MySql 数据库group by 的用法,order by 嵌套使用。优化问题
- mysql中的性能优化问题
- mysql同步问题之Slave延迟很大优化方法
- redmine在linux上的mysql性能优化方法与问题排查方案
- 在Ubuntu上源码安装MySQL+安装问题解决+安全优化 推荐
- 关于mysql中innodb的count优化问题分享
- Mysql查询优化之 触发器加中间表 方法优化count()统计大数据量总数问题
- mysql性能优化(五) mysql中SELECT+UPDATE处理并发更新问题解决方案
- (转) mysql 的一些优化问题
- Mysql优化之问题定位
- 再说两句话 - mysql 优化问题
- 关于mysql中innodb的count优化问题分享
- Windows7下MySQL5.5.20免安装版的配置 - (补上了我遇到的几个问题,以及mysql启动优化)
- MySql性能问题的定位,排查和优化总结
- innoDB锁问题-《深入浅出Mysql--数据库开发、优化与管理维护》
- Mysql索引优化遇到的问题
- Mysql的优化问题
- MYSQL关于limit优化问题