2008-12-15 71 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

相关问题