工作总结--sql子查询
2017-01-03 11:55
246 查看
id | name | contact_qq | num |
1 | 张哈哈 | 123456 | 4 |
2 | 李思思 | 654321 | 5 |
3 | 田沉沉 | 123456 | 2 |
4 | 王小王 | 123456 | 7 |
5 | 李呵呵 | 986542 | 3 |
因为好久没用过子查询,就在上星期项目开发中碰到子查询,有点傻眼了。好久没用生疏好多。其实刚开始并没有想到用子查询来解决,仅仅是简单查询然后配上foreach(),循环里面在跟上查询,但是这样写到最后发现排序跟分页不好弄了。然后询问同事,决定采用子查询。
解决方案:子查询
子查询求和,外部查询对求和结果进行分页和排序
$subQuery = $AccountContactLog->alias('b')->where(array('b.contact_qq' => array('exp','=a.contact_qq')))->field("sum({$month})")->select(false);
$list = $AccountContactLog->alias('a')->field("a.* , {$subQuery} AS month")->limit($offset , $rows)->group('a.contact_qq')->order("month desc")->select();
这样实现就简单多了。。
但是我发现数据量大时,sql的查询速度很慢,于是我又给contact_qq加上索引。
我又分析下子查询执行原理,执行过程中,先为子查询(内层查询)建立一个临时表,然后外层查询再临时表中查询记录,查询完毕后,撤销临时表。所以子查询的速度会受到一定的影响,速度量大时,影响也随之增大。
相关文章推荐
- 近期工作总结
- 一年工作的总结
- InteliIM 1.0 设计文档 - 全文总结与工作展望(修订)
- 从今天开始写工作总结
- 江苏省信息中心8月份工作总结和9月份工作要点
- AIX环境下用磁带进行备份与恢复工作的一点总结
- 今日工作总结(10.14)
- 3.24-3.25工作总结
- 在即将离开工作了四年的软件业前[zt,一位前辈关于代码优化的总结]
- 工作四年后的总结
- 工作再次总结
- 041101-041107工作总结。
- 2004年下半年工作总结
- 明天的任务(完善程序和工作总结)
- 工作总结
- 最近一直在做C#操作office方面的工作!总结一下!(一)Excel
- 半年工作总结会议
- 本月工作总结
- 总结一下这个月的工作,思考一下下一步的计划
- 今天工作总结以及javascript引擎Rhino介绍