MERGE INTO
这是关于 Oracle RDBMS 12c 上具有特定场景的 Oracle 语句的一般问题。
每日数据将被加载到StagingTableA
- 大约 10m 行。这将是MERGEd INTO TableA
。
TableA
将在 0 到 10m 行之间变化(匹配StagingTableA
)。有时可能TableA
会被修剪/清空并留下 0 行。
显然,当TableA
为空时,直行INSERT
将完成这项工作,但程序已被编写为使用一种MERGE INTO
方法来处理所有场景。
位于MERGE .. MATCH
索引列上。
我的问题是不确定如何MERGE
处理将开始为空MATCH
的情况TableA
,然后在MERGE
执行期间大幅增长。索引列将MATCH
使用 FTS,因为统计信息将显示该表有 0 行。
在MERGE
交易过程中的某个时刻,这将变得低效。
该MERGE
语句是否足够聪明,可以检测到这一点并更改执行计划,并开始使用索引而不是 FTS?
如果这是用旧方式完成的,CURSOR
那么我们可能会在适当的点(比如在处理 50,000 次之后)引入 a以切换到最佳计划。UPDATE
INSERT
ANALYZE
TableA
我找不到任何处理这个特定问题的文档。