创建、修改和删除空间索引
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric SQL 数据库
空间索引可以更高效地对数据类型为“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”类型列的索引,当你指定“地理网格”分割方案后,边界框字段变为只读状态,因为地理网格分割不使用边界框。
你还可以指定任意级别的分割方案的“每个对象的单元数”字段和网格密度的非默认值。 每个对象的默认单元格数对于 SQL Server 2008 (10.0.x) 为 16 个,对于 SQL Server 2012 (11.x) 或更高版本为 8 个,对于 SQL Server 2008 (10.0.x) 则默认网格密度为“中”。
在 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 (10.50.x) 或 SQL Server 2008 (10.0.x)。 当需要与 SQL Server 2008 R2 (10.50.x) 或 SQL Server 2008 (10.0.x) 数据库向后兼容时,必须对空间索引使用 SQL Server 2008 R2 (10.50.x) 或 SQL Server 2008 (10.0.x) 空间分割。