微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL Server 2005 – 内部联接的顺序

我在Where子句中有一个包含三个内连接语句的查询.查询大约需要2分钟才能执行.如果我只是改变两个内连接的顺序,性能下降到40秒.

除了改变内连接的顺序之外怎么做才能对查询性能产生如此巨大的影响?我原本以为优化器会想出这一切.

解决方法

sql是声明性的,也就是说,JOIN顺序无关紧要.

但是,实际上,如果它是一个复杂的查询,当优化器没有探索所有选项(理论上可能需要几个月)时,它可以在实践中.

一个选择是,如果你重新排序并得到不同的结果,它是一个非常不同的查询,但这通常是使用OUTER JOINs.

它也可以是指定ON子句的方式如果重新排序FROM子句,它必须改变.除非您使用旧的(和坏的)JOIN-in-the-WHERE子句.

最后,如果这是一个问题,您可以使用括号来更改评估顺序,以使您的意图明确,比如,首先过滤大表以生成派生表.

原文地址:https://www.jb51.cc/mssql/83196.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐