Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 相同的查询,不同的性能_Sql_Sql Server_Tsql_Ssms - Fatal编程技术网

Sql 相同的查询,不同的性能

Sql 相同的查询,不同的性能,sql,sql-server,tsql,ssms,Sql,Sql Server,Tsql,Ssms,我有一种情况,即我有两个SQL Server数据库驻留在同一台服务器上,我们将它们称为SOURCE和COPYCOPY是源代码的副本(通过SSMS复制数据库功能),唯一的区别是现在数据库的名称不同 我现在遇到一个问题,我对SOURCE执行的某个查询速度极快,而对COPY执行完全相同的查询大约需要两分钟。就我个人而言,我不知道这可能是什么原因 我已经使用SSM检查了每个数据库的所有属性/配置,所有内容看起来都是一样的,但显然缺少一些内容 是什么导致性能如此巨大的差异?可能是您的统计数据已过时,或者您

我有一种情况,即我有两个SQL Server数据库驻留在同一台服务器上,我们将它们称为
SOURCE
COPY
COPY
源代码的副本(通过SSMS复制数据库功能),唯一的区别是现在数据库的名称不同

我现在遇到一个问题,我对
SOURCE
执行的某个查询速度极快,而对
COPY
执行完全相同的查询大约需要两分钟。就我个人而言,我不知道这可能是什么原因

我已经使用SSM检查了每个数据库的所有属性/配置,所有内容看起来都是一样的,但显然缺少一些内容


是什么导致性能如此巨大的差异?

可能是您的统计数据已过时,或者您的索引需要重建


如果检查每个数据库的执行计划,您应该能够看到导致差异的原因。如果没有,请发布每个数据库的执行计划的详细信息,然后可能会提供更多帮助。

副本数据库中的统计信息可能已过时,这是造成差异的最可能原因。如果您使用完全限定表名[serverName].[schemaname].[TableName]。如果是这种情况,则需要修改这些SP以引用新的数据库名称。一种简单的方法是编写对象脚本,并对数据库名称部分执行“全部替换”操作。因此,所讨论的查询与视图通信,而视图也与完全不同的数据库通信。因此,我无法更新该视图的统计信息,可以吗?除非该视图有索引,否则没有可更新的统计信息。如果两台服务器都连接到同一个链接服务器,那么这不应该是速度慢的原因。编辑:您是否能够获取执行计划以查看服务器之间的差异?是的,视图上没有索引。我还没能拿到执行计划。另外,这两个数据库都运行在同一台服务器上。