空间索引没有帮助SQL查询(性能非常慢)

时间:2016-09-07 15:26:06

标签: sql-server tsql indexing gis

我试图在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]

查询计划:(您可能需要放大;)

enter image description here

0 个答案:

没有答案