mdm*_*m20 6 sql-server spatial
我有一张表,里面有大约 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 子句有时会减慢速度?
归档时间: |
|
查看次数: |
553 次 |
最近记录: |