SQL表关联中的逻辑与效率(二)
来源:互联网 发布:乐乎 编辑:程序博客网 时间:2024/06/16 05:15
之前写的《SQL表关联中的逻辑与效率》一开始计划的是还要写group by在关联中的效率问题的,结果写到一半被人叫走了给忘了……于是在这里补充一篇
接上一篇文章http://blog.csdn.net/strangerzz/article/details/45746621
二、关联中的group by
考虑下面两条语句
语句1 SELECT t1.oid, SUM(t2.f0007) FROM wrnophq.ne_cell_w t1 INNER JOIN wrnophq.PERF_CELL_W_TRAFFIC_3 t2 ON t1.oid = t2.oid GROUP BY t1.oid;
对比
语句2 SELECT t1.oid, t2.f0007 FROM xxxx t1 INNER JOIN ( SELECT oid, SUM(f0007) f0007 FROM yyyy GROUP BY oid) t2 ON t1.oid = t2.oid;
语句2的执行顺序已经很明显了,这里仅贴出语句1的执行计划如下:
可以看到,在这种语句中,语句1是先做关联,再做group by的。而语句2中先对t2做group by减少了结果的数量,再与t1做关联,这种方式的效率明显比t1的执行效率要高很多。
但是可以简单地用语句2代替语句1来提高查询效率吗?答案是否定的。因为根据处理的数据以及表关联的方式不同,语句1、2得到的结果并不总是相同的。比如,当t1和t2的关联为多对多的关联(即t1、t2中的oid都存在重复的时候,当然这种场景可能不多),或者当做JOIN的关键字段并没有全都出现在group by子句的时候(这种时候需要看具体情况了),以及其他一些我暂时没想到的情况。
总而言之,在一条语句中同时需要做group by和关联的时候,可以根据具体的情况来使用语句2的形式优化查询效率。
0 0
- SQL表关联中的逻辑与效率(二)
- SQL表关联中的逻辑与效率
- SQL Server中的SQL语句优化与效率
- SQL Server中的SQL语句优化与效率
- SQL Server中的SQL语句优化与效率问题
- 效率与公平的逻辑关系
- oracle与sql两表关联更新
- 关联规则与提高算法效率
- JavaScript中的逻辑与
- [SQL]提升SQL执行效率诀窍1-逻辑执行顺序
- SQL中的关联更新和关联删除
- SQL中的关联更新和关联删除
- SQL中的关联更新和关联删除
- SQL中的关联更新和关联删除
- SQL中的关联更新和关联删除
- SQL 两表关联查询 where 条件中等号两端字段顺序对效率的影响
- SQL两表关联查询where条件中等号两端字段顺序对效率的影响
- js中的逻辑或和逻辑与
- Oracle 和 DB2有哪些区别
- 寻找数组中唯一出现两次的数
- 分享Android实现无线点餐系统
- Move.c && Move.h
- 指针函数 和 函数指针 指针为参数时使用堆内存
- SQL表关联中的逻辑与效率(二)
- VC ACTIVEX 控件网页打开错误8007007e
- SQL语句
- C++学习 boost学习之-Synchronization
- 第四部分:将状态数据添加到ToasterService实现(JMX Access)-数我的面包!
- java判断字符串中是否含有中文字符
- iOS动画——ViewAnimations
- 图表插件汇总
- 都是回车惹的祸- Redhat中cron之奇异行为索源