2013-10-16 38 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。

相關問題