Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 为什么SQL Server没有在内存中加载我的索引?_Sql Server 2005_Memory_Indexing - Fatal编程技术网

Sql server 2005 为什么SQL Server没有在内存中加载我的索引?

Sql server 2005 为什么SQL Server没有在内存中加载我的索引?,sql-server-2005,memory,indexing,Sql Server 2005,Memory,Indexing,我有一个表,它有800万条记录,有许多字段,包括lat/long值,它有一个lat/long字段索引 我正在进行一个查询,以查找位于点周围一个正方形内的记录(稍后细化为一个圆),这是一种: 选择Lat,Long FROM Data,其中(Lat介于1和2之间)和(Long介于1和2之间) 在我的开发机器中,它使用索引,并在大约50ms后返回(这是我第一次对特定点进行查询)。 在我的生产服务器中,它也使用索引,但是第一个查询返回大约需要2-4秒,接下来的查询返回大约需要10秒 在我的开发机器中,S

我有一个表,它有800万条记录,有许多字段,包括lat/long值,它有一个lat/long字段索引

我正在进行一个查询,以查找位于点周围一个正方形内的记录(稍后细化为一个圆),这是一种:

选择Lat,Long FROM Data,其中(Lat介于1和2之间)和(Long介于1和2之间)

在我的开发机器中,它使用索引,并在大约50ms后返回(这是我第一次对特定点进行查询)。
在我的生产服务器中,它也使用索引,但是第一个查询返回大约需要2-4秒,接下来的查询返回大约需要10秒

在我的开发机器中,SQL Server占用了500Mb的内存,在我的服务器中,大约130Mb

对我来说,一个明显的结论是,在我的机器中,索引被加载到内存中,而在生产服务器中它不是

我的假设正确吗? 我能做些什么来修复它

这是两台机器上W2k3上的SQL Express 2005(免费版本)。 我能想到的一个区别是我的机器是32位的,服务器是64位的,但我不认为这会影响内存中索引的加载

此外,服务器内存也没有不足。它有2Gb的物理内存,提交费用约为500Mb,因此有足够的空闲空间

任何想法都将不胜感激!
谢谢

当我遇到这种情况时,通常会尝试以下两种方法:

1-更新该表的统计数据:

更新统计数据


2-重建索引:(右键单击SQL Server Management Studio中的索引并选择重建)

更新统计信息无效。在尝试重建索引之前,我尝试了“重新组织”索引,它工作得非常好!!非常感谢你!!