我不确定在哪里/如何在查询中指定此 SQL 空间索引提示:-
SELECT Whatever
FROM Table1 a
INNER JOIN Table2 b ON a.Id = b.Id
WHERE @SomeBoundingBox.STIntersects(b.SomeGeographyShape) = 1
当我运行查询时,它没有使用空间提示。是的,我使用的是最新版本的 SQL Server 2008 r2 (v 10.5.1600.1 )。
因此,为了通过强制提示来比较查询速度,我尝试了...
SELECT Whatever
FROM Table1 a
INNER JOIN Table2 b WITH (INDEX(MySpatialIndex)) ON a.Id = b.Id
WHERE @SomeBoundingBox.STIntersects(b.SomeGeographyShape) = 1
这行得通,但性能确实很差。我想知道它是否试图使用我的提示进行a.Id = b.Id
连接(我不想使用提示)。
有什么建议么?
更新:
添加了查询计划。大部分成本是两个表之间的 JOIN。过滤器(where 子句)占据了第二个最昂贵的部分。