2012-11-15 69 views
1

我在SQL Server Azure的服务器象下面这样geography列创建空间索引..SQL空间索引和聚簇索引

CREATE INDEX空间sp_idx TableA上(GeographyAreaCode)使用GEOGRAPHY_GRID WITH(网格=(LEVEL_1 = LOW,LEVEL_2 =低,LEVEL_3 = HIGH,LEVEL_4 = HIGH),CELLS_PER_OBJECT = 16,DROP_EXISTING = ON)

现在我观察到正在创建具有给定名称sp_idx两个索引 - 一个空间,另一个作为Clustered index ..

SQL Server是否使用空间索引创建强制聚簇索引?

另外如果我不得不删除这个索引,它是否也会删除相关的聚集索引?

很多感谢,

回答

1

所有SQL Azure的表需要一个聚集索引: http://msdn.microsoft.com/en-us/library/windowsazure/ee336245.aspx#cir

这是由设计。要回答您的问题:

删除特殊索引不应删除聚簇索引。 SQL Azure可能创建了聚集索引,因为您没有它,并且这是SQL Azure中的一项要求。我自己管理聚簇索引,没有SQL Azure在那里放置默认的索引,只是为了满足需求。

更新

只能有任何SQL表中的一个聚集索引。没有其他聚簇索引在已经存在聚簇索引的表上进行管理。我希望这可以帮助您评论下面的内容。

+0

那么这个表已经有一个主键上的聚集索引。地理列不是主键..我的问题是,在地理数据列上创建的空间索引是否也创建了聚集/非聚集索引同一列? – PRE

+0

更新了我的答案。 –

+0

感谢您的答案巴特..我今天再次检查数据库,它奇怪,我发现在同一张桌子上的两个聚集索引..我刚才提到的,is_primary_key值= 0和表上的常规聚集索引..请注意,常规聚集索引基于复合主键(例如国家代码+邮政编码) – PRE