远程连接两个数据库服务器,更新数据

碧水幽幽泉 2010-02-24 02:05:26
远程连接两个数据库服务器:A、B
现在服务器A上建了一张表t1(6个字段),t1中的数据都是从服务器B上的t表(30多个字段)中的6个字段copy过来的!
问题:
现在A上的t1中又加了一个字段col1,要求col1的值也从B上的t表中取.(B上的t表中存在col1这列和值)。
t和t1中的数据都是480万条记录。

我使用:
update t1
set t1.col1 = (select col1 from t@dblink_cms b where a.id= b.id);

花了70分钟才把480万条数据给更新完(col1和id上都建有索引)
个人觉得效率太低了!

故想请教各位高手,能提供效率较高的方法吗?
...全文
193 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2010-02-25
  • 打赏
  • 举报
回复
怎么没人解答。。自己顶下!
碧水幽幽泉 2010-02-25
  • 打赏
  • 举报
回复
引用 5 楼 huangyunzeng2008 的回复:
把待更新的表的索引都disable掉,待更新完后在enable之试试

能说具体点吗?
因为两张都是大表,所以我了hash_join(也是不走索引的)

我在select后面加上了 /*+ use_hash(a b)*/. 查看执行计划后,是不走索引了,但效率还是很差!

碧水幽幽泉 2010-02-25
  • 打赏
  • 举报
回复
。。。。。。
huangyunzeng2008 2010-02-24
  • 打赏
  • 举报
回复
把待更新的表的索引都disable掉,待更新完后在enable之试试
碧水幽幽泉 2010-02-24
  • 打赏
  • 举报
回复
引用 3 楼 java3344520 的回复:
不是啊,我的意思是,你可以远程直接插入到本地临时表(整表拷贝应该不会太慢),然后在根据索引去更新,应该会快很多

恩!拷贝数据是很快了!

分别在两个表的id上都建了个索引。
但是由于数据量大,更新还是很慢!不知道是什么原因?


iqlife 2010-02-24
  • 打赏
  • 举报
回复
不是啊,我的意思是,你可以远程直接插入到本地临时表(整表拷贝应该不会太慢),然后在根据索引去更新,应该会快很多
碧水幽幽泉 2010-02-24
  • 打赏
  • 举报
回复
引用 1 楼 java3344520 的回复:
有个建议,你试试将对方整个表考过来,然后在去根据这个临时表进行更新你的表,似乎记得哪里看过用DBLINK不走索引

由于是跨服务器,整表拷贝数据也比较慢!呵呵!
iqlife 2010-02-24
  • 打赏
  • 举报
回复
有个建议,你试试将对方整个表考过来,然后在去根据这个临时表进行更新你的表,似乎记得哪里看过用DBLINK不走索引
相关推荐
发帖
Oracle 高级技术

3476

社区成员

Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
帖子事件
创建了帖子
2010-02-24 02:05
社区公告
暂无公告