2013-10-16 94 views
0

这个查询TSQL - 相同的查询是一个服务器上的慢,但在另一个

SELECT MAX(ID)FROM的GEOarea

非常快的速度非常快生产服务器(16GB RAM)上。它在1秒内执行。

但是它在测试服务器(3Gb RAM)上很慢。它需要超过10分钟(正在进行!)。

数据库是一样的。 SQL Server版本是一样的。

该表有200万行。 为什么它在测试服务器上变慢?我认为这只是一个集群索引扫描。

UPDATE

SQL重新启动没有帮助。 我已将生产数据库复制到测试服务器,并解决了问题。

+0

重建统计数据? – zimdanen

+0

您的硬盘可能有不同的速度。尝试重建索引和satistics。 –

+1

真的是SQL Server占用了测试机吗?你有其他服务吗?你能发布执行计划吗?如何在缓存有机会填充后再次重试?是否有其他语句在该机器上同时运行?你的声明是否被这些人阻止了?该列表为什么它更慢/更快实际上是相当无尽的...... –

回答

2

可(不限于)

  • 纯硬件相关的(在生产RAID,远程测试SAN-溶液)
  • 在同一硬盘媲美活动/ RAM/CPU /表,也许僵局,也许未提交的事务仍处于打开状态
  • 缺失索引(我知道你是这么说的,但它是真的同一个数据库?)
2

10分钟它仍在运行?
你确定它仍在运行?
如果ID是一个聚集索引,并且该表有200万行,则说明有问题。
1秒到10秒是一个很大的区别。
1秒钟以上10分钟以上硬件或索引或统计以上。

您可能在该表上有一个锁。
尝试:

SELECT MAX(ID) FROM GeoArea with (nolock) 

如果不解决它重新启动SQL。

相关问题