假设我的选择查询的成本为 100,而我有另一种方式来编写两个成本为 (40 + 60) 的查询。两者最终具有相同的成本。
我想知道什么是最有效的方法。
忽略成本。它不是调优的起点,它只是 Oracle 用来为给定 SQL 语句选择最佳计划的内部排名。永远不能用成本来比较两条不同的 SQL 语句以确定哪个更好;即你可以有一个成本非常高的查询,它比成本低的查询更快并且使用更少的资源。
如果查询与将其一分为二一样快,则将其保留为一个 SQL(减少 1 次往返)。
在这种情况下,您应该测试两种方案(一个查询,成本 100 和两个查询,成本 40 + 60)......尝试每个场景至少您的查询在一小时甚至一天内执行的执行次数,记住在每个场景的测试之间应用更改系统刷新(缓冲区缓存和共享池)...