我有一个UNIX脚本 在这里我们使用SQL Loader创建表,索引并将日期从文件加载到该表。 并在此表上进行近70次直接更新(不是全部使用或批量收集)。
最后,我们将这个新表Data插入到另一个表中。它每天处理500 000条记录。所有这些更新都非常快。
将此数据插入另一个表格需要20分钟。如何改进?
从tablex插入表()select(); 它为20万条记录花费了20分钟 Tablex-在同一个shell脚本中创建,加载,70直接更新。
单独选择和使用插入脚本检查解释计划成本是否相同。
从tabley插入表()select(); 上述声明的执行时间不到一秒钟。
答案 0 :(得分:0)
当我们使用SQL Loader进行直接路径插入时,记录将插入HighWaterMark上方。加载完成并且HighWaterMark向上移动后,原始/旧HighWaterMark位置下方可能会有许多空块。如果您的SELECT要进行全表扫描,它也将读取所有这些空块。检查您的表是否在一段时间内累积了大量空块。您可以使用Segment Advisor进行此操作。根据顾问建议,缩小表并释放未使用的空间。这可以加快执行速度。希望这会有所帮助。