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

当我使用相同的查询,但在不同的数据库上下文中时,错误的SQL执行计划

如何解决当我使用相同的查询,但在不同的数据库上下文中时,错误的SQL执行计划

有人可以请我解释一下,为什么对同一个t-SQL查询有两个不同的执行计划吗? 当我在查询中使用完整表名和数据库名称时,只有我通过命令“使用”更改了数据库上下文。查询,但应在同一数据库上执行,因为查询包含全名约定。 对我来说这没有意义!

Show two different exec-plan

解决方法

它们基本上是相同的查询计划,只是并行执行了一个。 对于您从中运行查询的数据库,MAXDOP的配置可能有所不同,

,

查询计划基于统计信息,该统计信息基于您在某个时间点的数据分布。如果表定义相同,并且所有三个表中的数据完全相同,并且统计信息已更新,那么您可能会看到类似的计划(尽管这取决于数据库设置以及在两个不同的查询上在硬件方面的差异)服务器)。

在您的情况下,我怀疑两个数据库中的统计信息存在差异。

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