TSQL - 同一个查询在一台服务器上运行缓慢,但在另一台服

时间:2013-10-16 13:06:29

标签: sql-server tsql query-optimization

此查询

SELECT MAX(ID)FROM GeoArea

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

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

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

该表有200万行。 为什么测试服务器上的速度很慢?我以为它只是一个集群索引扫描。

更新

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

2 个答案:

答案 0 :(得分:2)

可以(不限于)

  • 纯硬件相关(生产中的RAID,测试中的远程SAN解决方案)
  • 在相同的硬盘/ RAM / CPU /表上竞争活动,可能是死锁,也许是未开放的交易仍在打开
  • 缺少索引(我知道你是这么说的,但真的是同一个数据库吗?)

答案 1 :(得分:2)

10分钟,它仍在运行?
你确定它还在运行吗?
如果ID是聚集索引,并且该表有200万行,那么就会出现问题 1秒至10秒是一个很大的区别 1秒到10分钟以上不仅仅是硬件或索引或统计数据。

您可以锁定该表。
尝试:

SELECT MAX(ID) FROM GeoArea with (nolock) 

如果不能解决问题,请重新启动SQL。