1

我有两张桌子

select col1 , col2 , col3, col4, ........, col20 from ftcm; --TABLE has 470708 ROWS

select val from cspm where product='MARK'; --TABLE has 1 ROW

我必须做col3null好像col2=val

曾想过加入

  select 
    col1 , col2 , decode(col2,val,NULL,col3) col3 , col4, ........, col20
    from ftcm a left outer join ( select val from cspm where product='MARK') b
    on a.col2=b.val;

但这似乎需要时间请告知是否有任何其他方法可以以最佳方式对其进行调整。

4

1 回答 1

1

我没有测试过这个查询,但是如果你知道来自 cspm 的记录只返回一个值,那么你也许可以尝试以下查询:-

select col1, col2, decode(col2,(select val from cspm where product='MARK'),NULL,col3) col3, col4 ... col20 from ftcm

由于您正在执行外连接,因此上述内容可能会产生等效的输出。

您可以探索的另一个选项是使用并行提示

select /*+ parallel(em,4) */ col1, col2, decode(col2,(select val from cspm where product='MARK'),NULL,col3) col3, col4 ... col20 from ftcm em

但是,在使用指定程度的并行提示之前,请咨询您的 DBA (4)

于 2013-07-31T02:37:05.193 回答