Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 server 在较大的SQL Server上执行查询速度较慢_Sql Server_Performance_Sql Server 2008 R2 - Fatal编程技术网

Sql server 在较大的SQL Server上执行查询速度较慢

Sql server 在较大的SQL Server上执行查询速度较慢,sql-server,performance,sql-server-2008-r2,Sql Server,Performance,Sql Server 2008 R2,我有一个查询,在本地机器上需要14秒,但在一个有8个内核和64gb内存的服务器上需要1:30 我在本地计算机上运行SQL Server 2008R2 developer,在服务器上运行64位标准 我已经隔离了查询的一部分,这似乎是导致问题的原因,因为当我将其取出时,查询将在10秒内完成 and (ID is null or (ID not in (select ID from Details where

我有一个查询,在本地机器上需要14秒,但在一个有8个内核和64gb内存的服务器上需要1:30

我在本地计算机上运行SQL Server 2008R2 developer,在服务器上运行64位标准

我已经隔离了查询的一部分,这似乎是导致问题的原因,因为当我将其取出时,查询将在10秒内完成

and (ID is null
     or (ID not in (select ID
                    from  Details
                    where (another_ID is not null)
                      and (yet_another_ID is not null))))
查询的其他几个部分与此非常类似,似乎不会引起问题

查询计划显示为百分比,在两台服务器上几乎相同


请帮助..

首先,我将“不在”替换为“不存在”,这可能会提高整体性能并减少逻辑读取

第二,当您提到数据集大小相同时,您的意思是返回的数据集大小相同,还是您正在访问的所有表大小相同?我这样问是因为如果您加入WHERE子句或在WHERE子句中使用的表(例如示例中的详细信息)大得多,这也可能会导致性能问题

我最不愿意想到的是,这些统计数据可能已经过时了。如果是这样,并且您有一个专门的DBA,那么这可能是他们的任务。如果没有可用的DBA,我将开始研究如何刷新您的统计数据。从这里开始:

我和那个网站或网站上的人并没有任何关系,我只是发现很多内容都是彻底的、有帮助的,并且是面向读者的,而不是喋喋不休的技术问题


可能会在评论中留下这个,但rep不够高:)

使用执行计划查看SQL Server是否有任何优化查询的建议。这是一个简单的第一步。之后,需要对执行计划进行审查。我将告诉您,子选择几乎总是比连接执行得慢;根据您发布的内容,我认为您应该关闭该子选择。感谢您的回复,但我的问题是两台服务器之间的时间差,而不是查询的总体性能。我知道查询可能会更整洁,但为什么服务器之间存在巨大差异?两台服务器上的数据大小是否相同?这些机器有不同的硬件?机器上运行着不同的进程?您是否排除了缓存的可能性?这不再是一个编程问题,属于dba stack exchange站点。“更大”的SQL Server可能正在运行来自数千个用户的查询,或者具有不同的数据集、不同的索引、不同的统计信息、碎片化/损坏的索引,或者。。。。。。等等等等,谢谢你的回复。更大的服务器几乎没有任何负载,我使用的是完全相同的数据集。当我在服务器上使用execution planner并查看缺少的索引时。有人建议使用一个索引,当应用该索引时,查询速度会比我的本地机器快(仅5秒)。但是,当我尝试查看本地计算机上缺少的索引时,不建议使用相同的索引。有人能解释一下吗?