T-SQL中的地理查询:使用索引

时间:2013-06-17 19:54:01

标签: tsql sql-server-2012 sqlgeography

假设我们有一个生日小丑的数据库,其中包含一个地理列,其中包含每个小丑所在的Point的二进制表示(根据小丑家庭地址的纬度和经度生成)。地理专栏上有一个地理索引。

一家大型国际软件公司的首席执行官向我们发送了一份CSV文件,其中包含其在美国的所有员工及其街道地址,包括纬度和经度;我们必须生成一份报告,告诉每位员工15英里内有多少个生日小丑。

我们的情况可能如下:

where 
(ClownLocationInBinary).STDistance( geography::Point(EES.lat, EES.lng, 4326) ) < radius

或者像这样:

where
   geography::Point(EES.lat, EES.lng, 4326).STDistance(ClownLocationInBinary) < radius

两个where子句是否都会利用我们在BirthdayClowns表上创建的索引?或者其中一个使用它而不是另一个?如果是这样,哪个是哪个?

1 个答案:

答案 0 :(得分:0)

当我昨天问到,我不在安装SQL Server的机器上,无法检查查询计划,也无法通过搜索找到信息。但是我有机会查看查询计划,并且where子句的两个版本都使用索引。