SQL语句技巧,怎样查询才高效?

一川烟草123 2003-12-31 10:52:08
A表 B表
Aid(P) amount Aid(F) amount
2 100 2 15
3 200 2 30
4 150 5 1000
5 8000
要得到一下结果
1 100
2 15
2 30
3 200
4 150
5 8000
5 1000

最原始的查询
select aid,amount from A
union all
select a.aid,b.amount from a,b where a.aid(+) = b.aid
但是当A表是一个很复杂的查询是,对效率影响很大.
...全文
31 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
一川烟草123 2004-01-03
  • 打赏
  • 举报
回复
其实A表我简化了,A表是一个100多行的大查询.
A表中有业务的金额

B表对应A表业务的税金

业务信息和业务金额和业务对应税金要一起列出来.
所以后面出现一个(+)
xzou 2004-01-03
  • 打赏
  • 举报
回复
就你的说法和要求,和你最后列出的查询结果,只用
select aid,amount from A
union all
select aid,amount from b
就行了
qiansl 2003-12-31
  • 打赏
  • 举报
回复
union all本来效率就不高,再加上一个左连接,效率就更受影响啦,
可以换种方法哇---
lkpei 2003-12-31
  • 打赏
  • 举报
回复
up
bzszp 2003-12-31
  • 打赏
  • 举报
回复
看来主要是A的查询语句占用的时间多一些
优化一下,对相关字段加上索引。
xzou 2003-12-31
  • 打赏
  • 举报
回复
能先把你先查询的结果要求说出来吗
beckhambobo 2003-12-31
  • 打赏
  • 举报
回复
最好使用执行计划,查看数据在哪出错?
snowy_howe 2003-12-31
  • 打赏
  • 举报
回复
其实我不是很明白为什么用了union all要用(+)呢?
按照贴主的数据结构,不用也可以啊
jiezhi 2003-12-31
  • 打赏
  • 举报
回复
union all 的效率至少比union高。
實際的速度也是很快的。聯接才使效率降低得很厲害。

17,082

社区成员

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

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