我有一張擁有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的承諾費用,所以有足夠的餘量。
任何想法將不勝感激! 謝謝!
UPDATE STATISTICS不起作用。 在嘗試重建索引之前,我嘗試過「重組」索引,並且它工作完美! 非常感謝! – 2008-12-16 00:25:19