我有10个表加入的查询。
我是否需要按照任何顺序编写sql连接?
假设table-1有1000条记录,table-2有900条记录,依此类推
那么我是否需要为表创建更多的记录,然后是更少的记录?这样我们就可以提高sql的性能。
答案 0 :(得分:4)
没有*。自从具有基于规则的优化器(RBO)的Oracle版本6以来,这是不必要的。
(*除非您正在进入高级调优主题并需要使用提示,因为其他答案已经指出并进行了扩展)
Oracle 7以后有一个基于成本的优化器(CBO),它使用统计信息来计算它认为最有效的查询执行方式。
RBO的支持已从10g开始删除
答案 1 :(得分:0)
从oracle 10g开始,没有需要按特殊顺序放置表以提高性能。
优化器正在评估可能的连接路径。最大值受 OPTIMIZER_MAX_PERMUTATIONS 的限制。但是这个参数在oracle 11中已经过时了。
如果使用提示,顺序很重要。请查看以下链接以供进一步阅读。
以上所有答案都适用于10g以上的oracle。