较大的SQL Server上的慢查询执行

时间:2014-07-14 12:56:19

标签: sql-server performance sql-server-2008-r2

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

我在本地计算机上运行SQL Server 2008R2开发人员,在服务器上运行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))))

查询的其他几个部分与此非常相似,似乎不会导致问题。

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

请帮助..

1 个答案:

答案 0 :(得分:0)

首先,我会将“NOT IN”替换为“NOT EXISTS”,这可能会提升整体性能并减少逻辑读取。

其次,当您提到数据集大小相同时,您的意思是数据集RETURNED的大小是相同的,还是您访问的所有表都是相同的大小?我问,因为如果你加入或使用WHERE子句中的表(例如你的例子中的详细信息)明显更大,这也可能导致性能问题。

我想到的最后一件事是统计数据可能是陈旧的。如果是这种情况并且您拥有专用的DBA,那么它可能是一项任务。如果没有可用的DBA,我会开始研究如何更新您的统计数据。一个地方开始在这里: https://www.simple-talk.com/sql/performance/managing-sql-server-statistics/

我与该网站或其他人没有任何联系,我刚刚发现很多内容是彻底的,有用的,并且是为了教导读者而不是喷出技术喋喋不休。

会在评论中留下这个,但代表不够高:)