Я не уверен, где и как я могу указать эту подсказку пространственного индекса SQL в своем запросе: -
SELECT Whatever
FROM Table1 a
INNER JOIN Table2 b ON a.Id = b.Id
WHERE @SomeBoundingBox.STIntersects(b.SomeGeographyShape) = 1
Когда я запускаю запрос, он НЕ использует пространственную подсказку. Да, я использую последнюю версию SQL Server 2008 r2 (v 10.5.1600.1 ).
Итак, чтобы сравнить скорость запроса с помощью подсказки, я попытался ...
SELECT Whatever
FROM Table1 a
INNER JOIN Table2 b WITH (INDEX(MySpatialIndex)) ON a.Id = b.Id
WHERE @SomeBoundingBox.STIntersects(b.SomeGeographyShape) = 1
и это сработало, но это было действительно плохое исполнение. Мне было интересно, пытался ли он использовать мою подсказку для соединения a.Id = b.Id
(для которого я не хочу использовать подсказку).
Есть предложения?
UPDATE:
Добавлен план запроса. Основная часть стоимости - это соединение между двумя таблицами. Фильтр (предложение where) занимает вторую наиболее дорогостоящую часть.