我有一个UNIX脚本在此,我们将创建表,索引并使用SQL加载器将日期从文件加载到此表中。并在此表上进行近 70 次直接更新(不用于全部或批量收集)。
最后,我们将这个新表数据插入到另一个表中。它每天处理 500,000 条记录。所有这些更新都非常快。
在将此数据插入另一个表中需要 20 分钟。如何改进这一点?
- 插入
- 没有问题,因为在同一张桌子上,我们从另一个工作正常的桌子上插入了 500 000 个校长。在不到一分钟的时间内完成插入。
插入到表 () 中,从表 x 中选择 ();500 000 条记录需要 20 分钟Tablex-创建,加载,70直接更新在同一个shell脚本中完成。
检查了单独选择和使用插入脚本的解释计划成本,两者都是相同的。
插入到表中 () 从表中选择 ();上述语句执行不到一秒钟。
- 我使用了并行提示。成本降低。CPU 利用率为零。
- 我应该再创建一个表表,然后将数据从表z加载到我的最终表吗?
- 是否需要收集统计数据?这是每日运行程序。
当我们使用 SQL 加载程序进行直接路径插入时,记录将插入到高水位标记上方。加载完成并且高水位标记向上移动后,原始/旧高水位标记位置下方可能有很多空块。如果您的 SELECT 要进行全表扫描,它也将读取所有这些空块。检查您的表在一段时间内是否累积了大量空块。为此,您可以使用细分市场顾问。根据顾问建议,缩小表并释放未使用的空间。这可以加快执行速度。希望这有帮助。