查询成本最佳实践

时间:2012-12-07 13:19:19

标签: sql database oracle

假设我的选择查询成本为100,而我还有另外一种方法可以编写两个有成本(40 + 60)的查询。两者最终都有相同的成本。

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

3 个答案:

答案 0 :(得分:4)

忽略成本。它不是调优的起始位置,它只是Oracle用来为给定的SQL语句选择最佳计划的内部排名。成本永远不能用于比较两个不同的SQL语句来确定哪个更好;也就是说,与具有低成本的查询相比,您可以获得成本非常高的查询,并且使用的资源更少。

如果查询的速度与将其分成两部分一样快,则将其保留为一个SQL(少做一次往返)。

答案 1 :(得分:0)

在我看来,取决于您的数据库是否允许查询中的并行性。

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

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

在oracle中,实例,它解释了here

答案 2 :(得分:0)

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