创建、修改和删除空间索引
空间索引可以更有效地对数据类型的geometry
geography
列(空间列)执行某些操作。 可对空间数据列指定多个空间索引。 这非常有用,例如,对单一列中的不同分割参数建立索引时,就是如此。
创建空间索引时有许多限制。 有关详细信息,请参阅本主题中的 对空间索引的限制 。
注意
有关空间索引与分区和文件组的关系的信息,请参阅 CREATE SPATIAL INDEX (Transact-SQL)中的“备注”部分。
创建、修改和删除空间索引
创建空间索引
使用 Transact-SQL 创建空间索引
CREATE SPATIAL INDEX (Transact-SQL)
在 Management Studio 中使用“新建索引”对话框创建空间索引
在 Management Studio 中创建空间索引
在对象资源管理器中,连接到 SQL Server 数据库引擎 的实例,然后展开该实例。
展开 “数据库”,展开包含具有指定索引的表的数据库,再展开 “表”。
展开要为其创建索引的表。
右键单击“索引”,再选择“新建索引”。
在 “索引名称” 字段中,输入索引的名称。
在“索引类型”下拉列表中,选择“空间”。
若要指定想为其创建索引的空间数据列,请单击 “添加”。
在“从<表名>中选择列”对话框中,选择类型
geometry
列,或geography
选中相应的复选框。 然后,任何其他空间数据列将变为不可编辑状态。 如果要选择其他空间数据列,必须首先清除当前选定的列。 完成后,单击 “确定” 。请在“索引键列”网格中验证你的列选择。
在 “索引属性” 对话框的 “选择页” 窗格中,单击 “空间”。
在 “空间” 页上,指定要用于索引的空间属性的值。
在类型列上
geometry
创建索引时,必须指定边界框的 (X-min
、Y-min
) 和 (X-max
)Y-max
坐标。 对于类型列的geography
索引,在指定 Geography 网格分割方案后,边界框字段变为只读,因为地理网格 分割不使用边界框。你还可以指定任意级别的分割方案的“每个对象的单元数”字段和网格密度的非默认值。 对于 SQL Server 2008,每个对象的默认单元格数为 16,对于 SQL Server 2012 (11.x) 或更高版本,默认网格密度为 Medium for SQL Server 2008。
在 SQL Server 中,可以为分割方案选择 GEOMETRY_AUTO_GRID 或 GEOGRAPHY_AUTO_GRID。 选择 GEOMETRY_AUTO_GRID 或 GEOGRAPHY_AUTO_GRID 时,禁用级别 1、级别 2、级别 3 和级别 4 网格密度选项。
有关这些属性的详细信息,请参阅 Index Properties F1 Help。
单击 “确定” 。
注意
若要对同一空间数据列或另一个空间数据列再创建一个空间索引,请重复上述步骤。
在 Management Studio 中使用表设计器创建空间索引
在表设计器中创建空间索引
在对象资源管理器中,右键单击要为其创建空间索引的表,然后单击“设计”。
此时,将在表设计器中打开该表。
为索引选择
geometry
列或geography
列。在 表设计器 菜单上,单击 “空间索引”。
在 “空间索引” 对话框中,单击 “添加”。
在 “所选空间索引” 列表中选择新的索引,然后在右侧的网格中设置空间索引的属性。 有关属性的信息,请参阅空间索引对话框 (Visual Database Tools)。
更改空间索引
-
重要
若要更改特定于某个空间索引的选项(例如 BOUNDING_BOX 或 GRID),你可以使用 CREATE SPATIAL INDEX 语句指定 DROP_EXISTING = ON,或删除该空间索引并创建一个新的空间索引。 有关示例,请参阅 CREATE SPATIAL INDEX (Transact-SQL)。
删除空间索引
使用 Transact-SQL 删除空间索引
DROP INDEX (Transact-SQL)
使用 Management Studio 删除索引
删除索引
在 Management Studio 中使用表设计器删除空间索引
在表设计器中删除空间索引
在对象资源管理器中,右键单击具有要删除的空间索引的表,再单击“设计”。
此时,将在表设计器中打开该表。
在 表设计器 菜单上,单击 “空间索引”。
“空间索引” 对话框随即打开。
在 “所选空间索引” 列中单击要删除的索引。
单击 “删除” 。
对空间索引的限制
只能对类型为 geometry
或 geography
的列创建空间索引。
针对表和视图的限制
只能对具有主键的表定义空间索引。 表中主键列的最大数目为 15。
索引键记录的最大大小为 895 字节。 超过此大小会引发错误。
注意
对表定义空间索引时,不能更改主键元数据。
不能对索引视图指定空间索引。
多空间索引限制
最多可对支持的表中的任何空间数据列创建 249 个空间索引。 对同一空间数据列创建多个空间索引可能很有用,例如,在要对单个列中的不同分割参数建立索引时。
一次只能创建一个空间索引。
空间索引和处理并行度
索引的生成过程可以利用可用的处理并行度。
版本限制
SQL Server 2012(11.x)中引入的空间分割不能复制到 SQL Server 2008 R2 或 SQL Server 2008。 当与 SQL Server 2008 R2 或 SQL Server 2008 数据库向后兼容时,必须对空间索引使用 SQL Server 2008 R2 或 SQL Server 2008 空间分割。