日期:2014-05-17  浏览次数:20764 次

关于连接查询和单次查询的效率问题?
有三个关联表,其中的数据类似1*M*N 。

就是B对应指定A有M条数据,而C对应指定B有N条数据。

--------------------

我想问下是 三个表做连接的话,只使用一次查询就返回指定A的对应所有A.*,B.*,C.*列。

相比于,分三次查询。我先取指定A,然后通过A取对应的B,再通过B取对应的C。哪个速度会更快一些?

------------------------
三表连接查询得到的结果集,我用游标遍历肯定有冗余数据,需要程序进行分析处理。

分三次查询的话不会有冗余,但是不是多次查询的时间开销累加起来比联合查询大啊? 

另一方面说如果查询返回结果很多1*100*100是不是分三次查询效果会好一些。如果说返回结果只有不超过10列1*2*3,是不是联合查询好一些?

哪位大哥有经验给点提示呀,万分感谢。!

------解决方案--------------------
给你提个建议,你必须知道oracle是怎么执行语句的,你可以看看执行计划。
------解决方案--------------------
分别试试不就知道了嘛
------解决方案--------------------
一般不推荐用循环,尤其是游标循环。
------解决方案--------------------
1*100*100分三次查询
1,如果你的应用服务器到数据库网速不是瓶颈
2,服务器和数据库的各项Cache 都远远大于 1*100*100
则 query 1 次比query 3 次快
否则不好说
千万别用游标,除非观察蜗牛

------解决方案--------------------
建议query一次。但是也得看执行计划情况,比较一下。