我有一个运行的Oracle Insert查询,它已经忙了将近24小时
声明的SELECT
部分成本为211M
现在我已经更新了源表的统计数据,并且成本已经显着降低到2M。
我应该停止并重新启动INSERT
语句,还是新更新的统计信息会自动生效并开始加快效果?
我正在使用Oracle 11g。
答案 0 :(得分:2)
我应该停止并重新启动INSERT语句,还是新更新的统计信息会自动生效并开始加快性能?
下次Oracle解析时会使用新统计信息。
因此,优化器无法根据运行时收集的统计信息更新执行计划,因为已经解析了查询并且已经选择了执行计划。
12c
优化器可以带来的是adaptive dynamic execution
。它能够根据actual execution statistics
在运行时调整计划。您可以在http://docs.oracle.com/database/121/TGSQL/tgsql_optcncpt.htm