У меня серьезные проблемы с производительностью при запросе пространственного обновления в SQL Server 2008 (не R2) с использованием STDistance (). Цель достаточно проста: у меня есть таблица с 120 000 записей, Дома с колонкой Ближайшая библиотека . У меня есть вторая таблица с 12 записями, Библиотеки со столбцом Имя . Обе таблицы имеют столбец географии LatLngGeography . Я хочу обновить Houses.NearestLibrary с именем ближайшей библиотеки из Библиотеки .
Выполнение этого запроса занимает около 50 секунд:
UPDATE Houses
SET NearestLibrary = (
SELECT TOP 1 Name
FROM Libraries
ORDER BY Houses.LatLngGeography.STDistance(Libraries.LatLngGeography)
)
Это было бы почти приемлемо, за исключением того, что когда я запускаю его для парков, а не для библиотек, где у меня около 100 парков, это занимает почти в 10 раз больше времени. Обе таблицы имеют правильно построенные пространственные индексы с именами IX_Houses_LatLngGeography и IX_Libraries_LatLngGeography соответственно, но до сих пор я не смог понять, как заставить их использовать их запрос.
Есть ли способ повысить производительность моего запроса?