问题描述
oracle数据库中一张表的数据已经亿多而且此表创建了个独立的索引由于业务需要每天需分两次向此表中插入万条记录由于数据量大每次插入耗时个小时以上严重影响效率因此修改了系统的算法将此表中只存储当天新增记录将此表truncate后第二天执行对此表的update操作时非常耗时表中有亿多条数据的时候此sql语句耗时秒表中有万条数据的时候此sql语句耗时几个小时咨询DBA后得出结论需重建索引重建后秒完成此操作但第三天问题依然出现DBA正在查找原因难道每次truncate表都需要重建索引?
对于这个问题DBA也没有给出合理的解释推测主要原因是oracle复杂的查询优化算法
最终DBA给出的解决方案
truncate table
drop index
insert data
create index
analyze table table_name compute statistics;//重新生成统计数据
调整后整个操作耗时非常少