【发布时间】:2016-08-15 06:46:16
【问题描述】:
我有一个 UNIX 脚本 在此,我们使用 SQL Loader 创建表、索引并从文件加载日期到该表。 并在此表上进行近 70 次直接更新(不用于全部或批量收集)。
最后我们将这个新表数据插入到另一个表中。它每天处理 500 000 条记录。所有这些更新都非常快。
将此数据插入另一个表需要 20 分钟。如何改进?
- 插入没有问题,因为在同一个表上,我们正在从另一个工作正常的表中插入 500 000 个 rect。插入不到一分钟。
insert into tables() select() from tablex; 500 000 条记录需要 20 分钟 Tablex-在同一个 shell 脚本中创建、加载、70 次直接更新。
检查了单独选择和插入脚本的解释计划成本都相同。
insert into tables() select() from tabley; 上述语句执行不到一秒。
- 我使用了并行提示。成本降低。 CPU 利用率为零。
- 我应该再创建一个表 tablez 然后将数据从 tablez 加载到我的最终表吗?
- 是否需要收集统计信息?这是每日运行程序。
【问题讨论】:
-
第 1 步 - 阅读 How to Ask。
标签: database oracle performance sql-tuning query-tuning