Sql 更新具有数百万条记录的多个列
我有一个包含数百万条记录的表,并添加了两个新列Sql 更新具有数百万条记录的多个列,sql,oracle,Sql,Oracle,我有一个包含数百万条记录的表,并添加了两个新列 alter table hr.employees add (ind char(1Byte), remove Char(1 Byte)); commit; 我有另一个视图hr.department,它有更多的数据,并且有这两列 因此,如果我为这些记录编写和更新,需要很长时间 update hr.employees a set (ind, remove) =(select ind, remove from
alter table hr.employees add (ind char(1Byte), remove Char(1 Byte)); commit;
我有另一个视图hr.department
,它有更多的数据,并且有这两列
因此,如果我为这些记录编写和更新,需要很长时间
update hr.employees a
set (ind, remove) =(select ind, remove
from hr.department b
where a.dept_id = b.dept_id ) ;
已经一个小时了,它仍然在更新中。有人能帮上忙吗?处理此更新的最简单方法可能是:
与往常一样,Burleson Consulting是一个很好的资源:处理此更新的最简单方法可能是:
与往常一样,Burleson咨询是一个很好的资源:如果您的表有数百万行,那么使用
更新很可能会花费太多时间
我将重命名旧表,创建一个新表,其中新列已经填充,然后添加索引、约束、注释和收集统计数据
RENAME employees to employees_old;
CREATE TABLE employees AS
SELECT a.col1, a.col2, ... a.coln, b.ind, b.remove
FROM employees_old a
LEFT JOIN department b
ON a.dept_id = b.dept_id;
如果您的表有数百万行,那么使用更新
很可能会花费太多时间
我将重命名旧表,创建一个新表,其中新列已经填充,然后添加索引、约束、注释和收集统计数据
RENAME employees to employees_old;
CREATE TABLE employees AS
SELECT a.col1, a.col2, ... a.coln, b.ind, b.remove
FROM employees_old a
LEFT JOIN department b
ON a.dept_id = b.dept_id;
可能与执行计划重复,或者您是否检查了执行计划?如果hr.department中的dept\u id列未编入索引,则查询将耗时。可能与执行计划重复,或者您是否已检查执行计划?如果hr.department中的dept_id列没有索引,查询将需要很长时间。事实上,Burleson网站是一个相当不稳定的建议来源,有一些有用的东西和一些完全错误的建议。你发布的链接就是一个很好的例子,其中的建议已经有将近二十年的历史了(对Oracle 9i的引用是免费的)。实际上,Burleson网站是一个相当不稳定的建议来源,有一些有用的东西,还有一些完全错误的建议。您发布的链接就是一个很好的例子,其中的建议已经有近二十年的历史了(Oracle 9i的参考资料就是一个赠品)。这是我所见过的最成功的解决方案—用这些更改构建一个新表,然后删除现有的并切换这是我见过的最成功的解决方案——用更改构建一个新表,然后删除现有的并切换