1
我測試,如果我可以在SQL Server 2012空間索引減慢與STContains
所以在使用空間索引的查詢,我有一個表
CREATE TABLE [dbo].[Records]
(
[ID] [uniqueidentifier] PRIMARY KEY NOT NULL,
[Value] [nvarchar](256) NOT NULL,
[Padding] [nvarchar](max) NOT NULL,
[Bounds] [geometry] NOT NULL
)
和索引
CREATE SPATIAL INDEX [RecordsSpatialIndex]
ON [Records]([Bounds])
USING GEOMETRY_GRID
WITH
(
BOUNDING_BOX = (0, 0, 2000, 2000) -- all coordinates are within this range
);
[Bounds]列包含5點多邊形,實際上是矩形(x1 y1,x1 y2,x2 y2,x2 y1,x1 y1)。
@bounds變量包含相同類型的矩形。奇怪的是,下面的查詢
SELECT
[ID], [Value], [Padding]
FROM
[Records]
WHERE
([Bounds].STContains(@Bounds) = 1)
沒有空間索引運行速度的三倍以上。
隨着索引65%的時間是聚集索引查找記錄表和29%是過濾器。共65秒。
沒有索引92%的時間是過濾器,8%是聚集索引掃描記錄表。共19秒。
那麼,我在這裏做錯了什麼?
退房查詢計劃指標。有時候查詢優化器不是最優的。但它收集統計數據並變得更聰明。 – Paparazzi 2012-07-07 20:10:53