[菜鸟问题]这个UPDATE为何效率如此低???

y_h_zhang 2005-10-28 07:33:27
TABLE1和TABLE2里各有2万条数据,如下

TABLE1
COL1 COL2
1 NULL
2 NULL
3 NULL
4 NULL

TABLE2
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);
执行结果是正确的,但运行时间至少是半个小时??不知道是怎么回事???
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
y_h_zhang 2005-11-09
  • 打赏
  • 举报
回复
kinlin(小林) 的做法我试了,是错误语句
iolia1789 2005-11-01
  • 打赏
  • 举报
回复
UPDATE效率本来就很低啊,因为要存放DELETED等备份信息啊
kinlin 2005-11-01
  • 打赏
  • 举报
回复
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
zzwind5 2005-10-31
  • 打赏
  • 举报
回复
把TABLE1数据删除,
insert into table1
SELECT col1 ,TO_CHAR(COL2) col2 FROM TABLE2
windy_beijin 2005-10-31
  • 打赏
  • 举报
回复
应该和索引有关,
doulikeme 2005-10-28
  • 打赏
  • 举报
回复
decode没法实现 不是常量转换

应该是索引没建好
SELECT TO_CHAR(COL2)FROM TABLE2 T2 WHERE T1.COL1=T2.COL1
如果是full table access的话 确实会慢 不过如果机器好也不至于
不过是扫描2w*2w次嘛
j9dai 2005-10-28
  • 打赏
  • 举报
回复
用DECODE()实现呢

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧