2

假设我的选择查询的成本为 100,而我有另一种方式来编写两个成本为 (40 + 60) 的查询。两者最终具有相同的成本。

我想知道什么是最有效的方法。

4

3 回答 3

4

忽略成本。它不是调优的起点,它只是 Oracle 用来为给定 SQL 语句选择最佳计划的内部排名。永远不能用成本来比较两条不同的 SQL 语句以确定哪个更好;即你可以有一个成本非常高的查询,它比成本低的查询更快并且使用更少的资源。

如果查询与将其一分为二一样快,则将其保留为一个 SQL(减少 1 次往返)。

于 2012-12-07T13:29:14.900 回答
0

我认为取决于您的数据库是否允许查询中的并行性。

如果可以,您应该以第二种方式运行查询:成本相同,但您获得结果的速度更快。

例如,sqlserver 允许您运行并行查询,看看这里

例如,在 oracle 中,它在此处进行了解释。

于 2012-12-07T13:30:25.420 回答
0

在这种情况下,您应该测试两种方案(一个查询,成本 100 和两个查询,成本 40 + 60)......尝试每个场景至少您的查询在一小时甚至一天内执行的执行次数,记住在每个场景的测试之间应用更改系统刷新(缓冲区缓存和共享池)...

于 2013-02-23T01:25:08.980 回答