select *
  from clsindibaschgreg           a,
       clsindiacctab              b,
       dpsmainacc                 c,
       dpssubaccdet_his@hisdblink d
 where a.acctno = b.acctno
   and b.unitacctno = c.unitacctno
   and a.transdate = d.transdate
   and a.mseqno = d.mseqno
   and 1 = 2
   and trim(openbrccode) in
       (select trim(brccode) as brccode
          from GJTELLERDATA
         where tellercode = '200082')
此语句有1=2,应该没有满足的条件,但是在我这一机器上查询,查了半小时也不出结果,为什么?

解决方案 »

  1.   

    使用IN的时候先执行子查询,然后再执行主查询的WHERE条件可以将IN转换成EXIST子句即可
      

  2.   

    自己调试一下吧,把其余的都去掉,只留1=2看看,多尝试印象会更深刻。
    另外,exist也会执行子查询,但是它不会把结果读出来,只是判断一下有还是没有,所以比in的效率高。
      

  3.   

    看看你的sql语句的执行计划 条件1=2在哪一步, 有可能你子查询是第一步,本来就很慢