同一个表的不同列相等条件的sql调优

遇到一个问题请高手指教!sql大体如下所示:with A as (select T1.COL1,T1.COL2,T1.COL3,T1.COL4,T1.COL5,T1.COL6 ,T2.COL7 from TABSCHEMA.TABLE1 T1,TABSCHEMA.TABLE2 T2WHERE ... ), B as (select T1.COL1,T1.COL2,T1.COL3,T1.COL4,T1.COL5,T1.COL6 ,T2.COL7 from TABSCH...显示全部
遇到一个问题请高手指教!
sql大体如下所示:
with A as (
select
T1.COL1,
T1.COL2,
T1.COL3,
T1.COL4,
T1.COL5,
T1.COL6 ,
T2.COL7
from
TABSCHEMA.TABLE1 T1,
TABSCHEMA.TABLE2 T2
WHERE ...
)
,
B as (
select
T1.COL1,
T1.COL2,
T1.COL3,
T1.COL4,
T1.COL5,
T1.COL6 ,
T2.COL7
from
TABSCHEMA.TABLE1 T1,
TABSCHEMA.TABLE2 T2
WHERE ... ----跟第一个where的内容不同
)
select count(*) from A,B
where
A.COL1 = B.COL1
and A.C0L2 = A.COL3 and A.C0L4=A.COL7
with ur
大家注意一下我加粗的条件col2,col3,col4和col7都来源于A表,这个sql非常慢等了两个小时没有结果
修改了一下加粗的条件:and A.C0L2 = A.COL3 and A.C0L4=A.COL7-------->>and concat(A.C0L2 ,A.C0L4)=concat( A.COL3,A.COL7)
sql运行了10秒钟。
分别查看sql1和sql2的访问计划,发现它们的访问方式都是一样,并且第一个要比第二个快大约20%。然而实际的执行结果却大大不同!
请问,为什么访问计划会和实际的执行结果相差如此大?(--reorg和runstat已经做了)收起
参与6

查看其它 5 个回答brook005的回答

没有其他答案吗?
2010-03-30
浏览709

回答者

brook005 最近回答过的问题

回答状态

  • 发布时间:2010-03-30
  • 关注会员:0 人
  • 回答浏览:709
  • X社区推广