加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server 2005 – 内部联接的顺序

发布时间:2020-12-12 16:21:37 所属栏目:MsSql教程 来源:网络整理
导读:我在Where子句中有一个包含三个内连接语句的查询.查询大约需要2分钟才能执行.如果我只是改变两个内连接的顺序,性能下降到40秒. 除了改变内连接的顺序之外怎么做才能对查询性能产生如此巨大的影响?我原本以为优化器会想出这一切. 解决方法 SQL是声明性的,也就
我在Where子句中有一个包含三个内连接语句的查询.查询大约需要2分钟才能执行.如果我只是改变两个内连接的顺序,性能下降到40秒.

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

解决方法

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读