oracle问题 急救呀

yanxia611 2009-08-27 07:23:34
现在做一个查询报表,3个表之间的关联,数据有点多,我写的sql:
select distinct
c.afa051 || ' ' || c.afa052 afa052,
b.afa031 || ' ' || b.afa032 afa032,
from fa26 a, fa13 b, fa25 c
where 1 = 1
and ('000000' is null or c.aaa010 = '000000')
and ('' is null or c.afa054 = '')
and a.afa054 = c.afa054
and ('' is null or b.afa030 = '')
and a.afa034 = b.afa034
一直出现扩展temp段,我又增加了表空间,但还是不行,最后测试把distinct去掉,关联可以了,但是加上后面的where条件又 不可以啦,谁出现过类似的情况,给指教指教呀,还有distinct会降低查询速度吗,从我这里看是的,谢谢了
...全文
85 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2009-08-28
  • 打赏
  • 举报
回复
--真抠门,才3分,友情顶下
select distinct
c.afa051 || ' ' || c.afa052 afa052,
b.afa031 || ' ' || b.afa032 afa032,
from fa26 a, fa13 b, fa25 c
where 1 = 1
and c.aaa010 =nvl('000000',c.aaa010)
and c.afa054 =nvl('',c.afa054)
and a.afa054 = c.afa054
and b.afa030 =nvl('',b.afa030)
and a.afa034 = b.afa034
clarkchiang 2009-08-28
  • 打赏
  • 举报
回复
你where后面的字段是否都加索引了,如果没加加一下,试试
蜜_Lumia 2009-08-28
  • 打赏
  • 举报
回复
跟踪
小灰狼W 2009-08-27
  • 打赏
  • 举报
回复
where 1 = 1
and ('000000' is null or c.aaa010 = '000000')
and ('' is null or c.afa054 = '')
and a.afa054 = c.afa054
and ('' is null or b.afa030 = '')
and a.afa034 = b.afa034

'000000' is null 这个条件恒不成立
('' is null or c.afa054 = '') 这里包括一个恒成立和一个恒不成立的条件,加个or恒成立
下一个也一样
不可以是说速度慢,还是查不出结果,还是出错?

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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