Я пытаюсь проверить производительность пространственных индексов на значения Latitude/Longitude в таблице 1,7 миллиона почтовых индексов. Я создал столбец географии и добавил к нему индекс, однако запрос с использованием пространственного индекса резко (не менее 100 раз) медленнее, чем тот, который использует "нормальный" индекс на столбцах Lat/Long в той же таблице, но в плане запроса используется индекс.
Вот мой запрос:
DECLARE @point GEOGRAPHY
SET @point = geography::STGeomFromText('POINT(-1.31548 51.06390)', 4326)
SELECT postcode , location.STDistance(@point) AS dist
FROM dbo.Postcodes WITH(INDEX(IX_Postcodes_SpatialIndex))
WHERE location.STIntersects(@point.STBuffer(200)) = 1
ORDER BY location.STDistance(@point)
Как я могу отлаживать то, что происходит здесь?
EDIT: Я принимал большинство значений по умолчанию при создании индекса:
CREATE SPATIAL INDEX [IX_Postcodes_SpatialIndex] ON [dbo].[Postcodes] (Location)
USING GEOGRAPHY_AUTO_GRID
ON [PRIMARY]
План запроса: (возможно, вам нужно увеличить;)