描述
在企业级地理数据库中重新构建现有属性或空间索引。还可以重新构建版本化数据集的状态表、state_lineage 地理数据库系统表以及增量表的索引。 过期的索引可能会降低查询的性能。
使用方法
- 数据必须来自数据库或企业级地理数据库。此工具不适用于文件或个人地理数据库。
- 执行数据加载、删除、更新和压缩操作后,重新构建索引是非常重要的。
- 此工具可重新构建版本化和启用存档的地理数据库中基表、增量表和存档表的属性和空间索引。
- 包括系统表参数用于决定是否在指定地理数据库中重新构建状态表和状态谱系表的索引。未选择该选项时,将不重新构建这些表的索引。如果未选中包括系统表参数,则在待重建索引的数据集中至少需要选择一个数据集才能运行该工具。
- 待重建索引的数据集参数的添加值按钮仅可在模型构建器中使用。在模型构建器中,如果先前的工具尚未运行或其派生数据不存在,则可能不会对待重建索引的数据集参数填充值。添加值按钮可用于添加所需值,以完成对话框并继续构建模型。
- SAP HANA 不支持此工具。
语法
RebuildIndexes(input_database, include_system, {in_datasets}, {delta_only})
参数 | 说明 | 数据类型 |
input_database |
到企业级地理数据库(包含要为其重建索引的数据)的连接(.sde 文件)。 | Workspace |
include_system | 指示是否重新构建状态和状态谱系表的索引。 注:要成功执行此选项,您必须在为 input_database 指定的连接文件中以地理数据库管理员身份进行连接。 此选项仅适用于地理数据库。如果连接到了数据库,将忽略此选项。
| Boolean |
in_datasets [in_datasets,...] (可选) | 要重新构建索引的数据集的名称。数据集名称使用指向 input_database 的相对路径;不能输入完整路径。 | String |
delta_only (可选) | 指示如何在选定数据集中重新构建索引。如果 in_datasets 为空,则此选项不起作用。 此选项仅适用于地理数据库。如果输入工作空间为数据库,此选项将被忽略。
| Boolean |
派生输出
名称 | 说明 | 数据类型 |
out_workspace | 更新的工作空间。 | 工作空间 |
代码示例
以下示例演示了如何在 Python 窗口中重新构建索引。
# Import system modules
import arcpy
arcpy.RebuildIndexes_management("c:/Connections/GDB@DC@server.sde", "NO_SYSTEM","db1.GDB.Roads;db1.GDB.Parcels", "ALL")
以下示例演示了如何在独立脚本中重新构建索引。
# Name: RebuildIndexes.py
# Description: rebuilds indexes on delta tables for all datasets in an
# enterprise geodatabase
# Import system modules
import arcpy, os
# set workspace
workspace = arcpy.GetParameterAsText(0)
# set the workspace environment
arcpy.env.workspace = workspace
# NOTE: Rebuild indexes can accept a Python list of datasets.
# Get a list of all the datasets the user has access to.
# First, get all the stand alone tables, feature classes and rasters.
dataList = arcpy.ListTables() + arcpy.ListFeatureClasses() + arcpy.ListRasters()
# Next, for feature datasets get all of the datasets and featureclasses
# from the list and add them to the master list.
for dataset in arcpy.ListDatasets("", "Feature"):
arcpy.env.workspace = os.path.join(workspace,dataset)
dataList += arcpy.ListFeatureClasses() + arcpy.ListDatasets()
# reset the workspace
arcpy.env.workspace = workspace
# Get the user name for the workspace
userName = arcpy.Describe(workspace).connectionProperties.user.lower()
# remove any datasets that are not owned by the connected user.
userDataList = [ds for ds in dataList if ds.lower().find(".%s." % userName) > -1]
# Execute rebuild indexes
# Note: to use the "SYSTEM" option the workspace user must be an administrator.
arcpy.RebuildIndexes_management(workspace, "NO_SYSTEM", userDataList, "ALL")
print('Rebuild Complete')
环境
许可信息
- Basic: 否
- Standard: 是
- Advanced: 是