Использование STCrosses() с пространственным индексом в SQL Server
Поддерживает ли функция Microsoft StCrosses() для географических данных пространственный индекс?
Когда я пытаюсь выполнить эту функцию с пространственным индексом, я получаю следующее сообщение об ошибке:
"Обработчику запросов не удалось создать план запроса для запроса с подсказкой пространственного индекса. Причина: пространственные индексы не поддерживают имя метода, указанное в предикате. Попробуйте удалить подсказки индекса или удалить SET FORCEPLAN"
1 ответ
Нет.
Индексирование пространственных данных нетривиально, и обсуждаемый вами класс может содержать произвольно сложные фигуры, а не только простые геометрические фигуры. Конкретный способ реализации форм и индексации может сделать поиск совпадений трудным или невозможным в общем случае. Это также не основано на том, что индексируется из пространственных данных для сложных геометрий. Это может быть причиной того, что вы не можете требовать, чтобы SQL использовал только индекс - там недостаточно данных. В вырожденном случае может быть, но он не знал бы, поэтому он отключен.
Представьте себе звездообразную форму со сложными вещами. Индекс может хранить только границу внешнего shpe, или центр фигуры, или ограничительный прямоугольник. Ничего из этого будет недостаточно, чтобы вычислить пересечение двух фигур, или если фигуры фактически перекрываются.
См. http://msdn.microsoft.com/en-us/library/bb895265.aspx, чтобы убедиться, что он не поддерживается.