关于连接查询和单次查询的效率问题?
有三个关联表,其中的数据类似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一次。但是也得看执行计划情况,比较一下。