小编mdm*_*m20的帖子

sql server空间索引性能

我有一张表,里面有大约 200 万条记录。我创建了一个空间索引,使用边界框以外的默认值。我一直注意到有些查询非常快,有些则非常慢。决定因素出现在查询中使用的多边形的大小。

在较大的搜索区域,使用WITH(INDEX(SIX_FT5))会大大减慢查询速度(从 0 秒到 15 秒以上)。在较小的搜索区域,情况正好相反。

以下是我正在测试的一些查询:

快速地:

SELECT TOP(1000) 
  * 
FROM [FT5] 
WHERE 
  shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1
Run Code Online (Sandbox Code Playgroud)

减缓:

SELECT TOP(1000) 
  * 
FROM [FT5] WITH(INDEX(SIX_FT5)) -- Index hint is the only difference
WHERE 
  shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1
Run Code Online (Sandbox Code Playgroud)

为什么 WITH 子句有时会减慢速度?

sql-server spatial

6
推荐指数
1
解决办法
553
查看次数

标签 统计

spatial ×1

sql-server ×1