Indizes neu erstellen (Data Management)
Zusammenfassung
Aktualisiert Indizes von Datasets und Systemtabellen, die in einer Enterprise-Geodatabase gespeichert wurden. Dieses Werkzeug wird in Enterprise-Geodatabases verwendet, um vorhandene Attribut- oder räumliche Indizes erneut zu erstellen. Veraltete Indizes können zu schlechter Geodatabase-Performance führen.
Verwendung
- Die Daten müssen aus einer Enterprise Geodatabase stammen. Dieses Werkzeug funktioniert nicht mit File- oder Personal-Geodatabases.
- Nach dem Laden, Löschen, Aktualisieren oder Komprimieren von Daten müssen die Indizes in der Datenbank neu erstellt werden.
- Bei der Arbeit mit Tabellen oder Datasets werden mit diesem Werkzeug die Attribut- und räumlichen Indizes von Basistabellen, Delta-Tabellen und Archivtabellen neu erstellt.
- Der Parameter Systemtabellen einbeziehen wird verwendet, um zu bestimmen, ob die Indizes der Status- und die State-Lineages-Tabellen neu erstellt werden. Wenn die Option deaktiviert ist, werden die Indizes dieser Tabellen nicht erneut erstellt. Wenn der Parameter Systemtabellen einbeziehen deaktiviert ist, dann muss mindestens ein Dataset im Parameter Datasets, deren Indizes neu erstellt werden sollen ausgewählt werden, damit das Werkzeug ausgeführt werden kann.
- Die Schaltfläche Wert hinzufügen des Parameters Datasets, deren Indizes neu erstellt werden sollen wird nur in ModelBuilder verwendet. Der Parameter "Datasets, deren Indizes neu erstellt werden sollen" ist in ModelBuilder nicht mit Werten belegt, wenn das vorherige Werkzeug nicht ausgeführt wurde oder die abgeleiteten Daten nicht vorhanden sind. Mit der Schaltfläche Wert hinzufügen können Sie die erwarteten Werte hinzufügen, damit Sie das Dialogfeld abschließen und mit der Erstellung Ihres Modells fortfahren können.
Syntax
Parameter | Erläuterung | Datentyp |
input_database |
Die Enterprise-Datenbank, die die zu aktualisierenden Daten enthält. | Workspace |
include_system |
Gibt an, ob Indizes für die Status- und State-Lineages-Tabellen neu erstellt werden. ![]() Sie müssen der Geodatabase-Administrator sein, um diese Option erfolgreich ausführen zu können. Diese Option gilt nur für Geodatabases. Wenn der Eingabe-Workspace eine Datenbank ist, wird diese Option ignoriert.
| Boolean |
in_datasets [in_datasets,...] (optional) | Namen der Datasets, deren Indizes neu erstellt werden. Dataset-Namen verwenden Pfade relativ zum Eingabe-Workspace; vollständige Pfade werden nicht als Eingabe angenommen. | Dataset |
delta_only (optional) | Gibt an, wie die Indizes für die ausgewählten Datasets erneut erstellt werden. Diese Option hat keine Auswirkungen, wenn input_datasets leer ist. Diese Option gilt nur für Geodatabases. Wenn der Eingabe-Workspace eine Datenbank ist, wird diese Option ignoriert.
| Boolean |
Codebeispiel
Das folgende Beispiel veranschaulicht, wie Indizes im Python-Fenster in ArcGIS neu erstellt werden.
# Import system modules
import arcpy
arcpy.RebuildIndexes_management("Database Connections/GDB@DC@server.sde", "NO_SYSTEM","db1.GDB.Roads;db1.GDB.Parcels", "ALL")
Das folgende Beispiel veranschaulicht, wie Indizes in einem eigenständigen Skript neu erstellt werden.
# 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'