导航:首页 > 网络数据 > oracle大数据update

oracle大数据update

发布时间:2023-08-14 12:38:30

① ORACLE大数据表Update处理

ORACLE中如果表数据量很大(M级或更大) update某个字段是很慢的(如我的HIS项目中更新历史业务流程表 万条记录 用CURSOR来更新 条MIT一次 花了 天也没更新完) 后来尝试过的改进办法有

把表上的LOGGING取消

把表上的INDEX取消

但是依然很慢 无奈下找到这个

没陪在这个主题问答里 ORA官方提了一种处理的办法

利用CREATE table as select xxxxx的办法来生成一新表T

在T 上创建与目标表一样的索引

把目标表删除或RENAME(注意备份以备反悔)

把T 改名成目标表

试了一下 果然非常岁察如地快 我的任务差不多在 Min就完成了

如csywdk table_room是一张大表 要删除其中bakfwid在noNewYWFW 中的记录 且要更新bakfwid在imp_table_room中记录的ROOM_LOC为imp_table_room room_loc:

( )创建新表

create table tmp_new_table_room as

select t ROOM_ID t NEWROOMID t BUILDID t TFH t DKH t BUILD_NO t LAYER_NO t ROOM_NO t ROOM_NAME

decode(t bakfwid null t ROOM_LOC t room_loc)

t ROOM_AREA

t SURTYPE t LAYER_NAME t DEVDEP t CELL t DELFLAG t QXXZ t SJSJLSH t FD t ID t BAKFWID

from csywdk table_room t left join imp_table_room t on t bakfwid=t bakfwid

where not exists(select from noNewYWFW t where t bakfwid=t bakfwid)

( )创建备份表

create table Table_room as

select * from csywdk table_room

( )替换原表

drop table sde table_room

create table sde table_room as

select * from tmp_new_table_room

在这个问答里还提到一句ORA PL/SQL效率相关的话

能用一句语句处理的任务决不乎启要用多句编程来实现

lishixin/Article/program/Oracle/201311/18980

② 想update一个大表,数据量四千万左右,如何通过调整Oracle数据库的某些参数来提高性能,还请各位大虾指教~

优化update要根据使用方式决定:
1.如果是在线事务系统,那么建立合适的索引非常专重要,其次通过分属区技术设立合理的分区键也可以大大提升更新前的查找定位效率。

2.如果是后台批量数据分析系统,一次需要更新表中数据的大部分,那么可以考虑使用临时表过度,采用insert到临时表再替换原表的方式代替update操作,这样效率的提升非常可观,对系统的压力也小很多。也可以使用分区技术,对多个分区并行update操作以提升效率,但是系统的压力也会随之增大。

③ oracle 大数据量update优化方案

sql 写法有问题的,抄aa 表读了两次。
改写成如下试试
UPDATE aa

SET TRADE_STATUS = '0'
where exists (
select 1 from bb d where d.id= c.id and d.state= c.state
and d.DAY = '20150503'
) and c.TYPE = '1' AND c.PAYDATE is null;

bb 表上的 id 、 state 和 DAY 上应建组合索引,这样子查询效率很高。
aa 表上 TYPE 可以根据数据量考虑是否建索引;如果 TYPE =1 占比很小 (比如小于 1/30 建索引可能快些,否则 全表扫描 一次读取多个数据块;可能全表扫描效率更好)

④ Oracle更新(update)某大数据量的表的最优方法(语句)请教。解决送分。

建议你通过某个条件把这150万条记录,分成多个部分,写个存储过程,依次执行,执行完一部分就提交一部分。
这样即即减少了对内存的要求,也防止玩意update出错,还要花费大量的时间在回滚上。

⑤ oracle几百万条数据怎么update

首先要区分具体情况,虽然表里有几百万几千万的数据量,但是update是同时update这几百万条的数据呢?还是只更新其中某几条? 更新的数据量不同,解决方案自然也就有差异。同时update几百万数据,这个sql的性能影响在于数据库会做回滚段,以便异常时rollback。由于数据量大,性能就浪费在回滚段上了。 所以有2个方案供参考:
1. update时 ,禁用回滚段的生成,跟你前面说的nologing应该是一个意思
2. 分批更新,比如每更新10W条数据,就执行一次commit,这样效率也会比原来的要快。

阅读全文

与oracle大数据update相关的资料

热点内容
pps缓存文件怎么删除 浏览:10
家里网络在用怎么检测 浏览:419
克拉漫播下载的文件名 浏览:417
压缩好的文件哪里找 浏览:831
百度网盘怎样上传文件夹 浏览:320
java发展是 浏览:892
程序编程结束还要做什么 浏览:778
pcb打版文件有哪些 浏览:39
网络原来ip地址忘记了怎么办 浏览:142
iphone6s微信密码设置 浏览:810
java将数字转换成字母 浏览:854
c盘中的哪些是系统文件夹 浏览:668
分布式服务如何跨库统计数据 浏览:829
力控转发数据客户端模式如何建立 浏览:200
怎么样让自己的网站不被别人看到 浏览:711
编程扩展效果如何 浏览:335
荣耀畅玩手环同步qq 浏览:475
怎么向sql中添加数据库 浏览:596
录歌失败重启app什么意思 浏览:522
压缩文件包怎么在微信发送 浏览:432

友情链接