重建索引 (数据管理)

摘要

过期的索引可能会降低查询的性能。

使用情况

  • 执行数据加载、删除、更新和压缩操作后,重新构建索引是非常重要的。
  • 此工具可重新构建版本化和启用存档的地理数据库中基表、增量表和存档表的属性和空间索引。
  • 包括系统表参数用于决定是否在指定地理数据库中重新构建状态表和状态谱系表的索引。未选择该选项时,将不重新构建这些表的索引。如果未选中包括系统表参数,则在待重建索引的数据集中至少需要选择一个数据集才能运行该工具。
  • 待重建索引的数据集参数的添加值按钮仅可在 ModelBuilder 中使用。在 ModelBuilder 中,如果先前的工具尚未运行或其派生数据不存在,则可能不会对待重建索引的数据集参数填充值。添加值按钮可用于添加所需值,以完成对话框并继续构建模型。
  • SAP HANA 不支持此工具。

参数

标注说明数据类型
输入数据库连接

到数据库或地理数据库(包含要为其重建索引的数据)的连接(.sde 文件)。

Workspace
包括系统表

指示是否重新构建状态和状态谱系表的索引。

要激活此选项,您必须以地理数据库管理员身份进行连接。

此选项仅适用于地理数据库。如果连接到了数据库,将禁用此选项。

  • 未选中 - 不会重新构建状态表和状态谱系表的索引。这是默认设置。
  • 选中 - 将重新构建状态表和状态谱系表的索引。
Boolean
待重建索引的数据集
(可选)

要重新构建索引的数据集的名称。仅显示已连接用户所有的数据集。

String
仅重建增量表
(可选)

指示是否将只重新构建选定数据集的增量表的索引。如果未在输入数据集列表中选择任何数据集,则此选项将不可用。

此选项仅适用于地理数据库。如果连接到了数据库,将禁用此选项。

  • 选中 - 将只对选定数据集的增量表重新构建索引。选定数据集的业务表不常更新且增量表中编辑量较大的情况下可使用此选项。这是默认设置。
  • 未选中 - 将针对选定数据集的所有索引重新构建索引。包括空间索引以及用户创建的属性索引和数据集的所有地理数据库维护索引。
Boolean

派生输出

标注说明数据类型
更新的工作空间

更新的工作空间。

工作空间

arcpy.management.RebuildIndexes(input_database, include_system, {in_datasets}, {delta_only})
名称说明数据类型
input_database

到数据库或地理数据库(包含要为其重建索引的数据)的连接(.sde 文件)。

Workspace
include_system

指示是否重新构建状态和状态谱系表的索引。

注:

要成功执行此选项,您必须在为 input_database 指定的连接文件中以地理数据库管理员身份进行连接。

此选项仅适用于地理数据库。如果连接到了数据库,将忽略此选项。

  • NO_SYSTEM 不会重新构建状态和状态谱系表的索引。这是默认设置。
  • SYSTEM 重新构建状态和状态谱系表的索引。
Boolean
in_datasets
[in_datasets,...]
(可选)

要重新构建索引的数据集的名称。数据集名称使用指向 input_database 的相对路径;不能输入完整路径。

String
delta_only
(可选)

指示如何在选定数据集中重新构建索引。如果 in_datasets 为空,则此选项不起作用。

此选项仅适用于地理数据库。如果输入工作空间为数据库,此选项将被忽略。

  • ALL将针对选定数据库的所有索引重新构建索引。包括空间索引以及用户创建的属性索引和数据集的所有地理数据库维护索引。
  • ONLY_DELTAS将只对选定数据集的增量表重新构建索引。选定数据集的业务表不常更新且增量表中编辑量较大的情况下可使用此选项。这是默认设置。
Boolean

派生输出

名称说明数据类型
out_workspace

更新的工作空间。

工作空间

代码示例

RebuildIndexes 示例 1(Python 窗口)

以下示例演示了如何在 Python 窗口中重新构建索引。

# Import system modules
import arcpy

arcpy.RebuildIndexes_management("c:/Connections/GDB@DC@server.sde", "NO_SYSTEM","db1.GDB.Roads;db1.GDB.Parcels", "ALL")
RebuildIndexes 示例 2(独立脚本)

以下示例演示了如何在独立脚本中重新构建索引。

# 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')

相关主题