请教各位高手一个数据修改问题 我现在有两个表A,B;我想把B表的age记录放在A表的age中,两个表的number相同,我写的程序是update a set age=(select age from b where b.number=a.number)我建了两个表测试都成功了的,可是正式运行时我等了一天都没反映,提示都是"正在执行",我的A,B两个表里都有200W条数据,会不会是数据太大了,请教各位高手该什么处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你确定两张表的Number都是有对应关系的?还有如果运行了一天没有反映,检查一下Oracle的alert文件,看看两张表所属表空间的变化情况,实在不行,考虑把表按照Number大小进行分段Update。 我确定两张表的Number都是有对应关系,我从A,B表里分别取出300条记录,建了两个表测试都运行成功了的 那就不是程序问题了,性能,调优方面看看,运行snap package看看出来的Report. 运行snap package看看出来的Report. ??不太明白,我是个出初手,请指教 请问有没别的程序可以解决,有两个表A,B;把B表的age记录放在A表的age中,两个表的number相同, 在Google里面搜索Oracle statspack有很多介绍 先看看这个语句的执行计划,b上的number如果没有index,那么对a中的每一条记录都需要全表scan b表,那就是200W 次b的全表scan了 update a set age=(select age from b where b.number=a.number) 即使200w没有索引也不要那么久吧?建议看一下oracle的session管理,看是否有表被锁住,或者是前几次执行的时候没有rollback,造成回滚段不够用 而且,最让我郁闷的是,在提示"正在执行"时,我查了下CUP的使用率是)% 而且,最让我郁闷的是,在提示"正在执行"时,我查了下CUP的使用率是0% 我还想了个办法,不用update,先用将A表里age的值全替换成'0',然后用replace把B表的age值换进去,可是也无法实现 是否已经对a,b表中的number加入了索引! 而且,最让我郁闷的是,在提示"正在执行"时,我查了下CUP的使用率是0%----------------是在服务器端执行的,自己机器CPU是零也不奇怪吧? 我估计你在等几天吧update table set ... where很关键的没有写啊 静默安装oracle10g的问题 客户端电脑不识别oracle数据库中文字符 如何查询数据库中有多少个用户 在ORACLE数据库里,一条记录的最大长度和最多字段数有没有限制,最大是多少 oracle10的网格,数据是如何存储? 我写了这么点就报错了,帮我看看吧。 怎样在Linux下安装中文版的Oracle9i(9.0.2.0)阿? 想问问改变ORACLE里最大进程的数据由原来的100改为200,对数据库会有什么影响??? 如何在pro*c中调用存储过程,和如何得到返回值 help,系统默认用户scott权限不足? Pro*C/C++访问嵌套表的问题 一个关于日期的触发器该怎么写?
还有如果运行了一天没有反映,检查一下Oracle
的alert文件,看看两张表所属表空间的变化情况,实在不行,考虑把表按照Number大小进行分段Update。
运行snap package看看出来的Report.
有两个表A,B;把B表的age记录放在A表的age中,两个表的number相同,
Oracle statspack有很多介绍
那就是200W 次b的全表scan了 update a set age=(select age from b where b.number=a.number)
建议看一下oracle的session管理,看是否有表被锁住,
或者是前几次执行的时候没有rollback,造成回滚段不够用
----------------
是在服务器端执行的,自己机器CPU是零也不奇怪吧?