gpt4 book ai didi

sql-server - SQL Server 2008 未使用空间索引

转载 作者:行者123 更新时间:2023-12-02 19:47:02 25 4
gpt4 key购买 nike

我有一个地理类型的专栏。我已经创建了一个空间索引,但它没有被使用:

declare @geog geography 
select @geog = 'POINT (18.12 -33.2)'

select *
from dbo.product WITH(INDEX(IX_Spatial))
where
@geog.STDistance(GeoLocation) > 1000

索引的创建方式如下:

 CREATE SPATIAL INDEX [IX_Spatial] ON [dbo].[Product] 
(
[GeoLocation]
)USING GEOGRAPHY_GRID
WITH (
GRIDS =(LEVEL_1 = MEDIUM,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = MEDIUM),
CELLS_PER_OBJECT = 1024,
PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF,
DROP_EXISTING = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

各个级别的网格密度值并非故意设置为中等。我将它们设置为什么都没有区别,如果我查看估计的执行计划,则不会使用索引。

[http://blogs.msdn.com/b/isaac/archive/2008/08/29/is-my-spatial-index-being-used.aspx][1]

如果我尝试向查询优化器添加提示

declare @geog geography 
select @geog = 'POINT (18.12 -33.2)'

select *
from dbo.product WITH(INDEX(IX_Spatial))
where
@geog.STDistance(GeoLocation) > 1000

我收到此错误:

The query processor could not produce a query plan for a query with a spatial index hint. Reason: Spatial indexes do not support the comparator supplied in the predicate

我的数据库正在 SQL Server 2008 (100) 兼容级别运行。

.

最佳答案

SQL Server 通过以下方式创建空间索引:它将整个 map 分割成多个矩形(图 block )并为每个图 block 的数量建立索引。

对于任何给定点,可以计算距离内的矩形数量,但不能计算距离之外的矩形数量(可以有无限多个)。

关于sql-server - SQL Server 2008 未使用空间索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4154386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com