9 个解决方案
#1
可以试下,create table as select...插入临时表,然后truncate原表,再插入回来 insert into...select...
#2
语句上没什么可以优化的地方,另外如果被更新的这几个字段上有索引的话,更新过程中会重建索引。可以先尝试一下分批更新,不行的话再考虑其他办法,比如快速游标之类的
#3
临时表插入原表中的记录,然后插入增加的属性值,然后用select sum() ..from ... group by ..
#4
那增加的属性值里面如果有date类型怎么办?sum是不是不能对date对象进行操作?
#5
建议分批循环更新,避免锁表,占用大量UNDO。
#6
date类型就不行了,sum只能对数值使用
#7
你把你的需求以及可能的情况说清楚一些,也好对症下药
#8
重新建表的方式是最快的!
1、全表备份--》
2、Create Table TableName1 nologging As Select ....--》
3、删除源表Drop Table TableName Purge--》
4、Rename TableName1 To TableName
有授权信息、索引、备注等等的,预先收集存储好,重建表后再重建索引、重新授权、重建备注等等!
数据量大的,Update非常慢,重建表速度是最快的!
1、全表备份--》
2、Create Table TableName1 nologging As Select ....--》
3、删除源表Drop Table TableName Purge--》
4、Rename TableName1 To TableName
有授权信息、索引、备注等等的,预先收集存储好,重建表后再重建索引、重新授权、重建备注等等!
数据量大的,Update非常慢,重建表速度是最快的!
#9
全表扫描少不了。可以找出该SQL语句的sql_id,在v$active_session_history中查看该语句执行的过程,关注event,看看时间花在了什么地方
#1
可以试下,create table as select...插入临时表,然后truncate原表,再插入回来 insert into...select...
#2
语句上没什么可以优化的地方,另外如果被更新的这几个字段上有索引的话,更新过程中会重建索引。可以先尝试一下分批更新,不行的话再考虑其他办法,比如快速游标之类的
#3
临时表插入原表中的记录,然后插入增加的属性值,然后用select sum() ..from ... group by ..
#4
临时表插入原表中的记录,然后插入增加的属性值,然后用select sum() ..from ... group by ..
那增加的属性值里面如果有date类型怎么办?sum是不是不能对date对象进行操作?
#5
建议分批循环更新,避免锁表,占用大量UNDO。
#6
临时表插入原表中的记录,然后插入增加的属性值,然后用select sum() ..from ... group by ..
那增加的属性值里面如果有date类型怎么办?sum是不是不能对date对象进行操作?
date类型就不行了,sum只能对数值使用
#7
你把你的需求以及可能的情况说清楚一些,也好对症下药
#8
重新建表的方式是最快的!
1、全表备份--》
2、Create Table TableName1 nologging As Select ....--》
3、删除源表Drop Table TableName Purge--》
4、Rename TableName1 To TableName
有授权信息、索引、备注等等的,预先收集存储好,重建表后再重建索引、重新授权、重建备注等等!
数据量大的,Update非常慢,重建表速度是最快的!
1、全表备份--》
2、Create Table TableName1 nologging As Select ....--》
3、删除源表Drop Table TableName Purge--》
4、Rename TableName1 To TableName
有授权信息、索引、备注等等的,预先收集存储好,重建表后再重建索引、重新授权、重建备注等等!
数据量大的,Update非常慢,重建表速度是最快的!
#9
全表扫描少不了。可以找出该SQL语句的sql_id,在v$active_session_history中查看该语句执行的过程,关注event,看看时间花在了什么地方