复杂视图的连接条件

Jac*_*ack 3 oracle view

如果我加入两个/更多复杂的视图(通过加入两个/更多表组成的视图);它会导致对基表的多次读取迭代吗?

仅在基表本身上设置连接条件不是更有效吗?

这是我在我们的生产 Oracle 10g R2(ASM 磁盘组)环境中分析过的一个问题,sql 查询是由应用程序本身动态生成的,而不是使用表来提取结果,而是使用复合视图。
此外,条件连接经常在这些复合视图上实现。

复杂视图上的这种连接是否会不必要地导致高 CPU 利用率并占用宝贵的缓冲区缓存?

a_h*_*ame 5

永远不要假设或“相信”某事的原因。测试一下。

在您的情况下,对有问题的语句运行EXPLAIN PLAN并检查带有视图的计划是否比使用基表的相应 SELECT 更昂贵。

您还可以使用SQL*Plus' 自动跟踪功能检查两个查询完成的逻辑 IO。

如果仍然没有提供足够的信息,您可以打开跟踪并检查跟踪文件的 TKPROF 格式化实用程序的输出。