a 表 30几个字段
b 表 40几个字段两个表中有几个字段存放的数据是一样的。
从一个表中去 3个字段
select a.Col1, a.Col2, a.Col3
from a,b
where a.key = b.key从两个表中取 3个字段
select a.Col1, a.Col2, b.Col3
from a,b
where a.key = b.key
那种性能好,
数据量大的情况下,速度有多明显提升吗。

解决方案 »

  1.   

    应该差不多的,因为要做关联,数据量大的时候,oracle会选择用hash_join,对两个表都要全表扫描。
    你实际测一下就知道了。
      

  2.   

    多谢,如何测试我也不是太会。
    现在用的oracle9i,设置的是rbo。
    这样影响大吗
      

  3.   

     你用sqlplus登陆进去,
    然后执行
    set timing on
    set autotrace traceonly
    再分别执行上面2个语句,比较输出的结果。
      

  4.   

    如果说真有区别。那应该是select a.Col1, a.Col2, a.Col3
    from a,b
    where a.key = b.key要好些吧。至少在内存中取数时,一个表中的数据集中度要高些。避免了寻址方面的时间
      

  5.   

    时间差不多都是先扫表a,b 然后关联a.key = b.key 从结果中提取想要的字段