现在做一个查询报表,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会降低查询速度吗,从我这里看是的,谢谢了

解决方案 »

  1.   

    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恒成立
    下一个也一样
    不可以是说速度慢,还是查不出结果,还是出错?
      

  2.   

    你where后面的字段是否都加索引了,如果没加加一下,试试
      

  3.   

    --真抠门,才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