Перестроить индексы (Управление данными)
Краткая информация
Обновляет индексы наборов данных и системных таблиц, хранящихся в многопользовательских базах данных. Этот инструмент используется в многопользовательских базах данных для перестройки существующих атрибутов или пространственных индексов. Устаревшие индексы могут стать причиной низкой производительности базы геоданных.
Использование
- Данные должны быть из многопользовательской базы геоданных. Этот инструмент не работает с файловыми или персональными базами геоданных.
- После операций загрузки, удаления, обновления и сжатия данных важно перестроить индексы в базе данных.
- При работе с таблицами или наборами данных этот инструмент перестраивает атрибутивные и пространственные индексы базовых таблиц, дельта-таблиц и таблиц архивов.
- Параметр Включить системные таблицы (Include System Tables) определяет, будут ли перестроены индексы состояний и таблиц связей состояний. Когда эта опция не отмечена, индексы этих таблиц не перестраиваются. Если параметр Включить системные таблицы не отмечен, для запуска инструмента необходимо выбрать хотя бы один набор данных в параметре Наборы данных для перестроения индексов (Datasets to Rebuild Indexes For).
- Кнопка Добавить значение (Add Value) в параметре Наборы данных для перестроения индексов используется только в ModelBuilder. В ModelBuilder, если предыдущий инструмент не был запущен или не существует его производных данных, параметр Наборы данных для перестроения индексов может быть не заполнен значениями. Кнопка Добавить значение позволяет добавлять нужные значения, так что вы можете закрыть диалоговое окно и продолжить построение модели.
Синтаксис
Параметр | Объяснение | Тип данных |
input_database |
Многопользовательская база данных, содержащая данные для обновления. | Workspace |
include_system |
Показывает, будут ли перестроены индексы состояний и таблиц связей состояний. Примечание: Для выполнения этой опции необходимо иметь права администратора базы геоданных. Данная опция применяется только к базам геоданных. Если входная рабочая область является базой данных, эта опция будет проигнорирована.
| Boolean |
in_datasets [in_datasets,...] (дополнительно) | Имена наборов данных, индексы которых будут перестроены. Имена наборов данных используют пути относительно входной рабочей области; полные пути не допускаются в качестве входных данных. | Dataset |
delta_only (дополнительно) | Показывает, как будут перестроены индексы в выбранных наборах данных. Эта опция не оказывает влияния, если input_datasets пустой. Данная опция применяется только к базам геоданных. Если входная рабочая область является базой данных, эта опция будет проигнорирована.
| Boolean |
Пример кода
Следующий пример демонстрирует, как перестроить индексы, используя окно Python в ArcGIS.
# Import system modules
import arcpy
arcpy.RebuildIndexes_management("Database 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'