【发布时间】:2018-05-03 09:25:34
【问题描述】:
我有一个位置表,在 GeoLocation 列上有一个空间索引。以下查询有效:
SELECT *
FROM Location WITH (INDEX (SpatialIndex_GeoLocation))
WHERE GeoLocation.STDistance(GEOGRAPHY::STGeomFromText('POINT(4.271942
52.085289)', 4326)) < 50
但是,当添加第二个谓词时:
SELECT *
FROM Location WITH (INDEX (SpatialIndex_GeoLocation))
WHERE GeoLocation.STDistance(GEOGRAPHY::STGeomFromText('POINT(4.271942
52.085289)', 4326)) < 50
OR
GeoLocation.STDistance(GEOGRAPHY::STGeomFromText('POINT(5.758871 52.7845827)', 4326)) < 50
抛出以下异常:
查询处理器无法为带有 a
的查询生成查询计划
空间索引提示。原因:找不到所需的比较谓词。
尝试删除索引提示或删除 SET FORCEPLAN。
当然,删除索引提示会使查询工作,但不使用索引。
任何帮助将不胜感激
【问题讨论】:
标签: indexing azure-sql-database spatial sql-server-2016 sqlgeography