2009-04-09 151 views
3

我有一個查詢在生產中運行約2-4分鐘,但在開發時運行幾秒鐘。這兩個數據庫都位於同一臺服務器上。 (沒有關於開發和生產的講座,生產仍在開發中)。SQL Server 2008查詢生產速度慢,但開發速度很快

我的意思是,我可以打開兩個查詢窗口,並一致地得到兩個不同的結果。我運行了RedGate SQLCompare,並且沒有模式差異(索引等)差異。我禁用了連接到數據庫的站點,所以除了我的Management Studio會話之外,應該沒有任何連接。

這可能是什麼原因造成的?我通過複製生產數據庫創建開發數據庫(在Management Studio中,右鍵單擊數據庫並單擊「複製數據庫」)

這真的很奇怪。我不想做任何索引更改,因爲奇怪的是副本快速發佈,但製作非常非常緩慢,但應該基本上是完全相同的副本。

回答

7

我不知道SQLServer細節,但通常這種事情是由於兩個數據庫中的表統計不同。查看查詢計劃以查看它們是否不同。 運行SQL Server版本的「分析表」或「分析模式」命令。

如果這些東西沒有幫助,請檢查數據庫的設置方式。數據是否可能相同,但服務器配置是不同的,例如,生產版本的可用內存閾值要低得多?

還有其他東西要檢查 - 這只是我顯示我的無知 - 但是「複製數據庫」實際上是複製數據還是隻是對象定義?

+1

是的,統計是第一個看的地方。你可以運行EXEC sp_updatestats作爲一種火焰噴射器,看看它是否有任何初步改進。 否則,SquareCog是正確的:尋找配置問題(特別是在驅動器/磁盤)。 – 2009-04-10 15:09:42

+0

非常感謝你對EXEC sp_updatestats的評論 - 這完全解決了我的問題。我懷疑索引沒有被使用,因爲它們已經過時了,儘管重新創建了它們! – jocull 2013-11-01 17:23:32

0

嘗試運行SQL分析器以查看生產中運行的是什麼。

1

您不提供任何有關數據庫結構或SQL查詢的詳細信息,但如果您確信這兩個環境的設置是相同的,那麼它可能只是生產數據庫中的數據突出顯示無效查詢。

0

默認情況下,紅色大門會忽略統計信息和諸如填充因子等內容。

1

好的,謝謝大家。我認爲這個問題與索引碎片有關。我認爲複製數據庫基本上只是複製文件。我在每張桌上都做了DBCC DBREINDEX,現在效果很好。感謝大家!

1

在我的情況下,原來是因爲生產數據庫不在現場(不同的城市),開發數據庫在建築物中。咄。該查詢返回了大量數據,當然,該數據量在外部網絡上需要更長的時間。由於生產數據庫比舊的開發盒要快得多,而且我們的大多數查詢沒有爲網絡返回足夠的數據作爲速度因素,所以我只是沒有連接點。相反,它的生產框速度非常快,即使網絡連接速度較慢,大多數查詢的返回速度仍比開發框快。

相關問題