иметь таблицу с текстовым адресом местонахождения в следующем формате
[ID, TEXTADDRESS, GeoPoint]
После пересоздания той же базы данных на SQLSERVER 2016 [ранее это было в SQL SERVER 2012] производительность значительно снизилась. Был в состоянии искать местоположение как 2000 записей в секунду, теперь это занимает около 14 секунд на запрос. Единственное изменение, внесенное в таблицу, если оно было создано в отдельной группе файлов (DBF2.ndf) Кластерный индекс PK и пространственный индекс существуют в одном файле.
План выполнения кажется очень длинным, если сравнивать две версии SQL. В чем может быть проблема?
SET @point = Geography::Point(11.1548109,76.0293427,4326)
SET @region =@point.STBuffer(200) --200 meter buffer region
SELECT TOP 1 Id ,GeoPoint.STDistance(@point) FROM dbo.LocateAddress
WHERE GeoPoint.Filter(@region) = 1
ORDER BY GeoPoint.STDistance(@point) ASC