存储过程写法问题

陈大鱼 2013-05-31 09:50:09
请问,在存储过程里我做一个3表连接的查询,WHERE条件是一个表的主键
请问我是写3表联合查询比较快,还是分开一个表一个表查询比较快
当然我认为是联合查询比较好,但是我想听更详细点的说法。

例如
1. 3表联合查询
select C.d from A,B,C
WHERE A.b = B.b
AND B.c = C.c
AND A.a = 1;
2. 分开写
select A.b into v_b from A
WHERE A.a = 1;
select B.c into v_c FROM B
WHERE B.b = v_b;
select C.d FROM C
WHERE C.c = V_c;
...全文
227 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kilior 2013-06-04
  • 打赏
  • 举报
回复
要考虑IO代价, 如果连接字段设置不好,出现表扫描,效率就差, 但后者读出的数据一多, 就是找死
陈大鱼 2013-06-03
  • 打赏
  • 举报
回复
我的小上司她一直让我不要用表连接,我不以为然
陈大鱼 2013-06-03
  • 打赏
  • 举报
回复
当一个SQL如果非常的长的话,还应该用表连接写么 还是查出来数据,再用第二个SQL,当然索引什么的都是合理的
Rotel-刘志东 2013-06-01
  • 打赏
  • 举报
回复
效率应该高一些。
u010412956 2013-06-01
  • 打赏
  • 举报
回复
肯定是1了、
vanjayhsu 2013-05-31
  • 打赏
  • 举报
回复
引用 楼主 liarboss 的回复:
请问,在存储过程里我做一个3表连接的查询,WHERE条件是一个表的主键 请问我是写3表联合查询比较快,还是分开一个表一个表查询比较快 当然我认为是联合查询比较好,但是我想听更详细点的说法。 例如 1. 3表联合查询 select C.d from A,B,C WHERE A.b = B.b AND B.c = C.c AND A.a = 1; 2. 分开写 select A.b into v_b from A WHERE A.a = 1; select B.c into v_c FROM B WHERE B.b = v_b; select C.d FROM C WHERE C.c = V_c;
分开写的话如果查询记录有多条的话,这样会报错。而且如楼上所说,代码可读性不强。优先选择3表联合查询吧。只要建立了合适的索引,这种方式更通用一些。
jon_____ 2013-05-31
  • 打赏
  • 举报
回复
我觉得代码的可读性也很重要
善若止水 2013-05-31
  • 打赏
  • 举报
回复
还是三个表连接会快点。因为第二中方法貌似是用循环的方法,效率是很低的。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧