我试图在170万个邮政编码表中测试纬度/经度值上的空间索引的性能。我创建了一个地理列并为其添加了一个索引,但是使用空间索引的查询比使用' normal'的查询要慢得多(至少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)
如何调试此处发生的事情?
编辑: 我在创建索引时接受了大多数默认值:
CREATE SPATIAL INDEX [IX_Postcodes_SpatialIndex] ON [dbo].[Postcodes] (Location)
USING GEOGRAPHY_AUTO_GRID
ON [PRIMARY]
查询计划:(您可能需要放大;)