联接中的订购表:SQL调整

时间:2009-09-11 06:41:29

标签: sql oracle performance

我有10个表加入的查询。

我是否需要按照任何顺序编写sql连接?

假设table-1有1000条记录,table-2有900条记录,依此类推

那么我是否需要为表创建更多的记录,然后是更少的记录?这样我们就可以提高sql的性能。

2 个答案:

答案 0 :(得分:4)

没有*。自从具有基于规则的优化器(RBO)的Oracle版本6以来,这是不必要的。

(*除非您正在进入高级调优主题并需要使用提示,因为其他答案已经指出并进行了扩展)

Oracle 7以后有一个基于成本的优化器(CBO),它使用统计信息来计算它认为最有效的查询执行方式。

RBO的支持已从10g开始删除

请参阅:http://www.dba-oracle.com/oracle_tips_10g_cbo.htm

答案 1 :(得分:0)

从oracle 10g开始,没有需要按特殊顺序放置表以提高性能。

优化器正在评估可能的连接路径。最大值受 OPTIMIZER_MAX_PERMUTATIONS 的限制。但是这个参数在oracle 11中已经过时了。

如果使用提示,顺序很重要。请查看以下链接以供进一步阅读。

以上所有答案都适用于10g以上的oracle。