使用地理距离扩展 SQL 查询
Posted
技术标签:
【中文标题】使用地理距离扩展 SQL 查询【英文标题】:Extending SQL query with geography distance 【发布时间】:2013-08-09 18:09:07 【问题描述】:我有一个 SQL Server 2012 数据库,其中包含 300 万条公司记录,您可以在其中使用名称和地址字段中的一些 where like 子句进行搜索。这工作得非常快。
现在我用一个可选的点 + 距离参数来扩展这个查询。当使用这些参数时,查询会使用它们。
现在,仅搜索 varchar
列的速度非常快。仅搜索纬度/经度(点)+ 距离也很快。但是当我将两者结合起来时,它变得非常慢。
知道我可能做错了什么,或者我应该如何设置我的索引吗?
现在我有这些索引:
PK_CompanyId(主键附带的标准索引)
IX_CompanyData(正在搜索的 VARCHAR 字段的索引,并且该索引包含的列中包含 Lat 和 Long 列)
【问题讨论】:
到目前为止,您设置了哪些索引?地理列上有空间索引吗? 向我们展示表结构(列及其类型)并解释您是否已经拥有以及什么样的索引。也请告诉我们慢查询! 只是一个幼稚的尝试,但是您是否尝试过将两个快速查询相交?那是select ... from a where geography intersect select ... from a where varchar
。
对不起,我离开了几天,但现在我用我的索引信息编辑了我的问题。
【参考方案1】:
开始解决我的问题,首先将我的搜索结果缩小到与公司链接的城市的纬度/经度值上。这在性能上产生了巨大的差异。
【讨论】:
以上是关于使用地理距离扩展 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章