2008-12-15 65 views
1

我有一張擁有800萬條記錄的表格,其中有許多字段,包括緯度/長度值,並且它具有緯度/長度字段的索引。爲什麼SQL Server不在我的內存中加載索引?

我正在做一個查詢來查找落在點周圍的正方形內的記錄(以後提煉成一個圓圈),這是一種:

SELECT緯度,經度從數據中WHERE(緯度BETWEEN 1和2)和(長1和2之間)。

在我的開發機器中,它使用索引,並返回大約50ms(我第一次對特定點進行查詢)。
在我的生產服務器中,它也使用索引,但返回第一個查詢需要大約2-4秒,而對於後面的查詢則需要10ms。

在我的開發機器中,SQL Server在我的服務器上佔用了500Mb的內存,大約130Mb。

對我來說,顯而易見的結論是,在我的機器指數加載到內存中,並在生產斷絕它不是...

是我的假設是正確的? 我能做些什麼來解決它?

這是兩臺機器上的W2k3上的SQL Express 2005(免費版)。 我能想到的一個區別是,我的機器是32位,服務器是64,但我不認爲這會如何影響索引在內存中的加載。

此外,服務器沒有在內存中運行不足。它具有2Gb的物理內存,並且大約有500Mb的承諾費用,所以有足夠的餘量。

任何想法將不勝感激! 謝謝!

回答

2

當我遇到這種情況通常有兩種東西,我試試,按以下順序:

1 - 表上的更新統計信息:

UPDATE STATISTICS數據

2 - 重建索引:(右鍵單擊SQL Server Management Studio中的索引,然後選擇重建)

+0

UPDATE STATISTICS不起作用。 在嘗試重建索引之前,我嘗試過「重組」索引,並且它工作完美! 非常感謝! – 2008-12-16 00:25:19

相關問題