我有一个应用程序,基本上我有一个巨大的信息表(1 亿条记录),每一行都包含一个纬度/经度值。
我不断查询此表以获取适合某个点周围半径范围内的所有记录。例如,“39.89288,-104.919434 5 英里范围内的所有记录”
为此,我在 Lat/Long 列上有一个索引,我得到了点的“边界正方形”,然后在我的 ASP.Net 应用程序中丢弃了所有落在圆圈之外的点,因为这样更快而不是在 SQL Server 中进行圆计算。
注意:这是关于美国的所有数据,所以我认为地球是平坦的以进行计算,这对于我的需要来说足够精确。
现在,Lat/Long 索引的主要问题是它是点的“正方形”,因为我试图找到“x 和 y 之间的纬度”和“x 和 y 之间的长”,所以它不能真的超级高效地使用索引,就像我在“一行”点上搜索一样。
我一直在阅读 SQL 2008 的空间功能,但我没有找到足够的具体信息来了解这是否对我有用。
所以问题是:SQL 2008 是否有某种不同类型的索引可以使这种特定类型的查询比使用 SQL 2005 更快?