TABLE1和TABLE2里各有2万条数据,如下TABLE1
COL1   COL2
 1     NULL
 2     NULL
 3     NULL
 4     NULLTABLE2
COL1   COL2
 1     1998年10月26日
 2     2001年10月10日
 3     1995年02月01日
 4     1999年05月12日TABLE1和TABLE2的主键值(COL1)是一样的,我想按照COL1把TABLE2中的COL2更新到TABLE1的COL2中,并且把日期格式由年、月、日转化成YYYYMMDD形式,我的UPDATE是这样写的:
UPDATE TABLE1 T1 SET COL2=(SELECT TO_CHAR(COL2)FROM TABLE2 T2 WHERE T1.COL1=T2.COL1);
执行结果是正确的,但运行时间至少是半个小时??不知道是怎么回事???

解决方案 »

  1.   

    decode没法实现 不是常量转换应该是索引没建好
    SELECT TO_CHAR(COL2)FROM TABLE2 T2 WHERE T1.COL1=T2.COL1
    如果是full table access的话 确实会慢 不过如果机器好也不至于
    不过是扫描2w*2w次嘛
      

  2.   

    把TABLE1数据删除,
    insert into table1
    SELECT col1 ,TO_CHAR(COL2) col2 FROM TABLE2
      

  3.   

    update
    (
    select 
    T1.COL2 as b,T2.COL2 as c
    from 
    TABLE1  T1,
    TABLE2  T2
    where
    T1.COL1=T2.COL1
    ) tab1
    set tab1.b=tab1.c
      

  4.   

    UPDATE效率本来就很低啊,因为要存放DELETED等备份信息啊
      

  5.   

    kinlin(小林) 的做法我试了,是错误语句