【发布时间】:2011-03-17 09:08:41
【问题描述】:
我有一个应用程序,其中基本上有一个巨大的信息表(1 亿条记录),每一行都包含一个纬度/经度值。
我不断查询此表以获取适合某个点周围半径范围内的所有记录。例如,“39.89288,-104.919434 5 英里范围内的所有记录”
为此,我在 Lat/Long 列上有一个索引,我得到点的“边界正方形”,然后在我的 ASP.Net 应用程序中丢弃所有落在圆圈之外的点,因为这比在 SQL Server 中进行圆计算要快。
注意:这是关于美国的所有数据,所以我认为地球是平的,这对于我的需要来说已经足够精确了。
现在,Lat/Long 索引的主要问题是它是点的“正方形”,因为我试图找到“x 和 y 之间的纬度”和“x 和 y 之间的长”,它可以' 并没有真正超级高效地使用索引,因为如果我在“一行”点上搜索的话。
我一直在阅读 SQL 2008 的空间特性,但我没有找到足够的具体信息来了解这是否对我有用。
所以问题是:SQL 2008 是否有某种不同类型的索引可以使这种特定类型的查询比我使用 SQL 2005 更快?
【问题讨论】:
-
好问题!我在 SQL2005 中所做的事情与您现在所做的非常相似,所以我很想听听人们的想法
标签: performance sql-server-2008 indexing spatial