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