SELECT * FROM liuhuarecord lr
LEFT JOIN (SELECT sum(xxx) FROM cliprecord group by xxx) cr
ON cr.liuhuarecord_id = lr.idliuhuarecord 和 cliprecord 是一对多关系liuhuarecord 是一端
cliprecord 是多端
两个表的记录分别有3万条左右这个查询需要大概23秒 不知为何 请予神助
LEFT JOIN (SELECT sum(xxx) FROM cliprecord group by xxx) cr
ON cr.liuhuarecord_id = lr.idliuhuarecord 和 cliprecord 是一对多关系liuhuarecord 是一端
cliprecord 是多端
两个表的记录分别有3万条左右这个查询需要大概23秒 不知为何 请予神助
解决方案 »
- 很急!
- 如何学习J2EE ,请各位大侠赐教
- hibernate如何根据用户id查该用户提的问题?
- 报我看看这个报错异常,struts作的
- 同样的代码application能调用web服务,而applet调用时就出错(内附代码)
- 在使用j2eesdk1.4自带deploytool的时候,怎样设置JNDI Name?在线等!
- 简单问题,成功后马上给分
- 初学J2EE的问题,看了不要笑,分不够再加
- web.xml 中加载properties文件 从属性文件取值
- 有大佬能看看我这个MyEclipse配置Tomcat是怎么回事吗?
- 请教高手为什么异地使用花生壳连不上数据库
- 请教关于MySQL存储过程参数问题
1 对 多 ?这不是 1对1了么
而且 SELECT sum(xxx) FROM cliprecord group by xxx 这一句有问题
LEFT JOIN (SELECT sum(xxx) FROM cliprecord group by xxx) cr
ON cr.liuhuarecord_id = lr.idcr里面根本不存在liuhuarecord_id,你这语句不出错的话就是做了笛卡儿乘积!
用下面的试试看:
SELECT * FROM liuhuarecord lr
LEFT JOIN (SELECT liuhuarecord_id,sum(xxx) FROM cliprecord group by xxx) cr
ON cr.liuhuarecord_id = lr.id
SELECT sum(xxx) FROM cliprecord group by liuhuarecord_id
这样没问题了吧 但执行时间还是很长
LEFT JOIN (SELECT liuhuarecord_id,sum(xxx) FROM cliprecord group by liuhuarecord_id) cr
ON cr.liuhuarecord_id = lr.id
没错 这句就是做了笛卡尔乘积 实际上子查询中我也是写了liuhuarecord_id了的,并且是有索引的,还是慢
结果虽然一样 但执行时间差十万八千里
LEFT JOIN cliprecord cr on lr.id = cr.liuhuarecord_id group by cr.liuhuarecord_id希望能帮到你