当前位置:数据库 > Oracle >>

oracle 数据库

我现在有一个需求,Oracle数据库中有 700多万数据,我现在想修改其中一个字段的值,数据至少 500万,(如,字段type=0的 我要修改为 type=10) 请哪位高手 告诉我 用什么方法 更快的执行。我 用一个update 语句在数据库中操作,一晚上都没有执行完,时间太长了。请告诉我一个快速的执行方法。我现在 再用存储过程,不过看着速度 也不似很快。我的 存储过程 如下, create or replace procedure up_table as begin update rytojs t set t.RLD_SFJTSLR='10' where t.RLD_SFJTSLR='0'; commit; end; exec up_table 请各位看看我的存储 过程有什么问题。 小弟 急需 解决 办法
答案:分段提交,比如10000行提交一次会快很多,不要建立索引,如果该字段有索引最好先drop掉,更新完再重建。因为你修改的数据占总数据的绝大部分,如果字段有索引,维护索引的开销很大。
其他:给你的RLD_SFJTSLR字段建个索引试下。预计速度应该能提高不少! 你试试这样
insert into  rytojs_res  (RLD_SFJTSLR)
select  
case when  t.RLD_SFJTSLR='0' then '10' else t.RLD_SFJTSLR end as RLD_SFJTSLR
 from  rytojs  t 
转换成select insert into 循环,每一万次commit一下 相应的字段建个索引就完了 没必要其他折腾 不要建立索引,因为你修改的字段占大多数,如果加索引的话会很费资源,而且更慢 
还是分段提交比较好! 

上一个:oracle 问题 我快疯了
下一个:oracle afiedt.buf 在哪可以看到

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,