这个查询
从 GeoArea 中选择 MAX(ID)
在生产服务器(16Gb RAM)上非常快。它在 1 秒内执行。
但它在测试服务器(3Gb RAM)上非常慢。这需要 10 多分钟(仍在进行中!)。
数据库是一样的。SQL Server 版本相同。
该表有 200 万行。为什么在测试服务器上很慢?我认为这只是一个集群索引扫描。
更新
SQL 重启没有帮助。我已将生产数据库复制到测试服务器并解决了问题。
这个查询
从 GeoArea 中选择 MAX(ID)
在生产服务器(16Gb RAM)上非常快。它在 1 秒内执行。
但它在测试服务器(3Gb RAM)上非常慢。这需要 10 多分钟(仍在进行中!)。
数据库是一样的。SQL Server 版本相同。
该表有 200 万行。为什么在测试服务器上很慢?我认为这只是一个集群索引扫描。
更新
SQL 重启没有帮助。我已将生产数据库复制到测试服务器并解决了问题。
10分钟,它还在运行?
你确定它还在运行吗?
如果 ID 是一个聚集索引并且该表有 200 万行,那么就有问题了。
1 秒到 10 秒差别很大。
1 秒到 10 分钟以上超过了硬件或索引或统计信息。
你可能在那个桌子上有锁。
尝试:
SELECT MAX(ID) FROM GeoArea with (nolock)
如果这不能解决它重新启动 SQL。
可以是(不限于)