【发布时间】:2019-05-06 21:21:08
【问题描述】:
SELECT *
FROM { SELECT * FROM BigMillionTable UNION ALL SELECT * FROM SmallTensTable }
WHERE (some_condition)
对比
SELECT *
FROM BigMillionTable
WHERE (some_condition)
UNION ALL
SELECT *
FROM SmallTensTable
WHERE (some_condition)
我的问题:
- 第一个查询是否需要将所有行放入
BigMillionTable在主内存中执行UNION ALL? - 哪个查询提供更好的性能?
【问题讨论】:
-
你尝试的时候发生了什么?但如果 Oracle 选择对这两个语句使用不同的执行计划,我会感到非常惊讶。
-
比较解释计划。有什么区别吗?
-
第一个查询的性能要好得多,因为它由于花括号语法错误而立即失败。修复它之后,Oracle 很可能会取消嵌套子查询,您将看到相同的 execution plan.
-
在 Sigmod 2018 上有一篇不错的文章,与该主题的 TeraData 相关。你应该阅读它:web.cs.wpi.edu/~meltabakh/Publications/…
标签: sql oracle oracle11g query-performance