tsql 内合并连接
我们有一些简单的 sql 查询,通过内连接连接多个表。 索引已存在,并且优化器建议没有丢失索引。
查询在我们的测试环境和其他几个系统上运行良好。 我们已将 sql 应用到另一个系统,并且查询失败了。 在自己的服务器上运行:几乎是即时的。 新服务器上的运行时间:大约 40 秒。
数据量是匹配的。
将“合并”提示添加到内部联接会给出从自己的服务器获知的估计运行时间。
为什么会有这些差异?
我们使用的是 ms-sql 2008 r2。
we've got some simple sql-queries, joining several tables with inner joins.
indices are existing, and no missing indices are suggested by optimizer.
the queries run fine on our test-environment and several other systems.
we've applied the sql to another system, and the query breaks down.
runtime on own server: nearly instant.
runtime on new server: about 40 seconds.
the amount of data is matchable.
adding the "merge" hint to the inner join gives the estimated runtimes, known from the own server.
why those differences?
we're on ms-sql 2008 r2.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许“慢”系统上的并行执行设置和环境是不同的。
暗示“合并连接”可能您替换了循环连接。
最好的确定方法是获取在两个不同系统中生成的查询计划,并查看差异。
Maybe parallel execution settings and evironment are different on the "slow" system.
Hinting the "merge join" probably you replaced a loop join.
The best way to be sure is to get the query plans generated in the two different systems, and look at differences.