У меня есть таблица Location с пространственным индексом в столбце 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
Выдается следующее исключение:
Обработчику запросов не удалось создать план запроса для запроса с
подсказка пространственного индекса. Причина: не удалось найти требуемый предикат сравнения.
Попробуйте удалить индексные подсказки или удалить SET FORCEPLAN.
Конечно, удаление подсказки индекса заставит запрос работать, но без использования индекса.
Любая помощь будет принята с благодарностью