Erstellen von Attributindizes
In ArcView können Attributindizes in ArcSDE-Geodatabases weder hinzugefügt noch geändert werden.
Attributindizes können Attributabfragen für Feature-Classes und Tabellen beschleunigen. Ein Attributindex ist ein alternativer Pfad, der von ArcGIS verwendet wird, um einen Datensatz aus einer Tabelle abzurufen. Bei den meisten Typen von Attributabfragen kann ein Datensatz schneller mit einem Index gesucht werden, anstatt mit dem ersten Datensatz zu beginnen und dann die gesamte Tabelle zu durchsuchen.
Sobald eine Feature-Class oder Tabelle Daten enthält, erstellen Sie Attributindizes für Felder, die Sie regelmäßig abfragen. Erstellen Sie jedoch nur Indizes, die Sie wirklich benötigen, da durch jeden hinzugefügten Index Änderungen an der Feature-Class ein wenig verlangsamt werden. Bei jeder Änderung der Feature-Class muss ArcGIS die Indizes ebenfalls aktualisieren. Wenn Sie häufig ein bestimmtes Feld bearbeiten, erstellen Sie nach Möglichkeit keinen Index dafür. Attributindizes können mit dem Dialogfeld Eigenschaften in ArcCatalog oder unter Verwendung der Geoverarbeitung erstellt werden. Nachdem ein Index hinzugefügt wurde, kann er jederzeit gelöscht und erneut hinzugefügt werden.
Sie verfügen über verschiedene Möglichkeiten zum Erstellen von Attributindizes. Attributindizes können für einzelne oder mehrere Felder erstellt werden, sie können eindeutig sein, und bei einigen Geodatabases können Sie in aufsteigender oder absteigender Sortierreihenfolge erstellt werden. Im vorliegenden Abschnitt der Hilfe erhalten Sie lediglich eine kurze Einführung in diese Konzepte. Wenn Sie eine Indizierungsstrategie für eine ArcSDE-Geodatabase erarbeiten, finden Sie ausführliche Informationen in der Dokumentation zum jeweiligen DBMS.
Erstellen von Attributindizes in ArcCatalog
Attributindizes können für ein oder mehrere Felder einer Geodatabase-Feature-Class oder Tabelle erstellt werden. Klicken Sie hierzu im Kataloginhaltsverzeichnis mit der rechten Maustaste auf den Namen der Tabelle, um das Dialogfeld Eigenschaften zu öffnen.
- Klicken Sie im Kataloginhaltsverzeichnis mit der rechten Maustaste auf die Tabelle oder Feature-Class, für die Sie einen Index erstellen möchten, und klicken Sie dann auf Eigenschaften.
- Klicken Sie auf die Registerkarte Indizes.
- Klicken Sie auf Hinzufügen.
- Geben Sie den Namen für den neuen Index ein.
- Aktivieren Sie das Kontrollkästchen Eindeutig, wenn Ihre Feldwerte eindeutig sind. Aktivieren Sie das Kontrollkästchen Aufsteigend, um einen aufsteigenden Index zu erstellen.
Die Einstellungen "Eindeutig" und "Aufsteigend" werden in File-Geodatabases nicht verwendet und müssen daher nicht aktiviert werden. Die Einstellung "Aufsteigend" wird in Oracle- und ArcSDE-Geodatabases nicht verwendet. Die Einstellungen "Eindeutig" und "Aufsteigend" sind für ArcSDE-Geodatabases in SQL Server nicht verfügbar und können deshalb nicht aktiviert werden.
- Klicken Sie auf die Felder, für die Sie diesen Index erstellen möchten.Hinweis:
Indizes mit mehreren Spalten werden in File-Geodatabases nicht unterstützt.
- Klicken Sie auf die Pfeilschaltfläche, um die Felder in die Liste Ausgewählte Felder zu verschieben.
- Verwenden Sie die Aufwärts- und Abwärtspfeile, um die Reihenfolge der Felder im Index zu ändern.
- Klicken Sie auf OK.
- Klicken Sie auf Übernehmen, um den Index zu erstellen, oder klicken Sie auf OK, um den Index zu erstellen und das Dialogfeld Eigenschaften zu schließen.
Erstellen von Attributindizes unter Verwendung der Geoverarbeitung
Das Toolset "Indizes" in der Toolbox "Data Management" enthält zwei grundlegende Werkzeuge zum Erstellen und Entfernen von Attributindizes.
Das Werkzeug Attributindex hinzufügen ermöglicht das Hinzufügen eines Index mit einer oder mehreren Spalten zu einer vorhandenen Tabelle, Feature-Class oder attributierten Beziehungsklasse. Diese Option ist mit jeder ArcGIS-Lizenz verfügbar.
Das Werkzeug Attributindex entfernen ermöglicht das Entfernen eines Index mit einer oder mehreren Spalten aus einer vorhandenen Tabelle, Feature-Class oder attributierten Beziehungsklasse. Diese Option ist ebenfalls mit jeder ArcGIS-Lizenz verfügbar.
Namen von Attributindizes
Beim Benennen eines Index in einer ArcSDE-Geodatabase empfiehlt es sich, dem Index einen Namen zuzuweisen, der angibt, welche Tabelle bzw. sogar welche Spalte er indiziert. Wenn jedoch der Name der indizierten Tabelle geändert wird, gibt der Indexname möglicherweise nicht mehr an, welche Tabelle indiziert wird. In einigen Unternehmen ist es üblich, Indizes einen Namen zuzuweisen, der angibt, dass es sich um einen Index handelt, beispielsweise durch Voranstellen oder Anhängen von IDX an den Namen. Ein Index für eine Tabelle mit Adressen kann beispielsweise "ADRS_APK_IDX" lauten, wobei "ADRS" angibt, dass sich dieser Index auf die Adressentabelle bezieht, "APK" die indizierte Spalte kennzeichnet und "IDX" kenntlich macht, dass es sich um einen Index handelt.
Wie für Tabellennamen gilt Folgendes für Indexnamen in ArcSDE-Geodatabases:
- Sie müssen in der Datenbank eindeutig sein.
- Sie müssen mit einem Buchstaben beginnen.
- Sie dürfen keine Leerzeichen enthalten.
- Sie dürfen keine reservierten Wörter enthalten.
Für das Benennen eines Attributindex in einer File-Geodatabase gelten keine Beschränkungen. Indexnamen in Personal-Geodatabases dürfen hingegen keine Leerzeichen und keine reservierten Wörter enthalten.
In ArcGIS gilt eine Beschränkung von 16 Zeichen für die Länge von Attributindexnamen. Diese Einschränkung leitet sich von der kleinsten zulässigen Länge in unterstützten Datenbanken ab, damit die Verteilung und gemeinsame Nutzung von Daten innerhalb verschiedener Geodatabases möglich ist.
Eindeutige Indizes
Die Option "Eindeutig" wird in File-Geodatabases nicht verwendet und muss daher nicht aktiviert werden. Die Option "Eindeutig" ist für ArcSDE-Geodatabases in SQL Server nicht verfügbar und kann daher im Dialogfeld "Attributindex hinzufügen" nicht aktiviert werden.
Wenn Sie einen Index erstellen, verfügen Sie über eine Option, mit der Sie diesen als eindeutig festlegen können. Wählen Sie diese Option aus, wenn für das Attribut in jedem Datensatz Einzelwerte vorhanden sind. Dadurch werden Abfragen dieses Attributs beschleunigt, da die Datenbank die Suche nach dem Auffinden des ersten entsprechenden Wertes abbrechen kann.
Beachten Sie jedoch, dass eine Feature-Class mit einem eindeutigen Index für ein benutzerdefiniertes Feld in einer Personal-Geodatabase nicht bearbeitet werden kann. Sie können auch keine Feature-Class bearbeiten, die sich in einem Feature-Dataset mit einer anderen Feature-Class befindet, die über einen eindeutigen Index für ein benutzerdefiniertes Feld verfügt. Wenn Sie eine Personal-Geodatabase bearbeiten möchten, gibt ArcMap den folgenden Fehler zurück:
"Keine Layer der Karte konnten bearbeitet werden. Überprüfen Sie, ob ein Layer oder eine Tabelle einen eindeutigen Index in einer benutzerdefinierten Spalte besitzt."
Wenn ein eindeutiger Index für ein Feld in einer Personal-Geodatabase vorhanden ist und Sie Änderungen vornehmen möchten, verwerfen Sie den eindeutigen Index in ArcCatalog, und erstellen Sie ihn als nicht eindeutigen Index neu.
Aufsteigende und absteigende Indizes
Die Option "Aufsteigend" wird in File-Geodatabases oder ArcSDE-Geodatabases in Oracle nicht verwendet und muss nicht aktiviert werden. Die Option "Aufsteigend" ist für ArcSDE-Geodatabases in SQL Server nicht verfügbar, und sie ist im Dialogfeld "Attributindex hinzufügen" deaktiviert.
Wenn Sie einen Index erstellen, verfügen Sie über eine Option, mit der Sie diesen als aufsteigend oder (falls diese Option nicht aktiviert ist) als absteigend festlegen können. Ein aufsteigender Index wird in aufsteigender Reihenfolge verwaltet. Die Städtenamen Athen, Berlin, London und Paris werden in einem aufsteigenden Index beispielsweise in dieser Reihenfolge aufgeführt. In einem absteigenden Index würden sie hingegen als Paris, London, Berlin und Athen aufgeführt.
In fast keinem Fall spielt die Reihenfolge, in der der Index verwaltet wird, überhaupt eine Rolle in Bezug auf die Abrufgeschwindigkeit, da Indizes bei den meisten Abfragen ebenso effektiv vorwärts wie rückwärts durchlaufen werden.
Indizes für eine Spalte und für mehrere Spalten
Indizes mit mehreren Spalten werden in File-Geodatabases nicht unterstützt. In den Dialogfeldern "Eigenschaften: Feature-Class" und "Eigenschaften: Tabelle" können keine Indizes für mehrere Spalten angegeben werden. Mit dem Geoverarbeitungswerkzeug "Attributindex hinzufügen" und ArcObjects können Sie einen Index für mehrere Spalten angeben. Wenn Sie den erstellten Index in den Dialogfeldern "Eigenschaften: Feature-Class" und "Eigenschaften: Tabelle" in ArcCatalog aufrufen, sieht er wie ein Index für mehrere Spalten aus. Tatsächlich wird jedoch für jedes Feld ein separater Index erstellt.
Indizes können in einer Personal- oder ArcSDE-Geodatabase für eine Spalte oder für mehrere Spalten erstellt werden. Indizes für mehrere Spalten sind hilfreich, wenn Sie in einer Abfrage häufig zwei oder drei Felder angeben. In diesem Fall kann ein Index für mehrere Spalten schnellere Abfragen als zwei oder drei separate Indizes ermöglichen, die für jeweils ein Feld festgelegt sind.
Die Reihenfolge, in der Felder in einem Index für mehrere Spalten aufgeführt werden, ist relevant. In einem Index für mehrere Spalten, bei dem Spalte A vor Spalte B aufgeführt wird, wird die Suche zunächst anhand von Spalte A ausgeführt. Darüber hinaus ist ein solcher Index viel nützlicher für Abfragen, bei der nur Spalte A durchsucht wird, als für Abfragen, bei denen nur Spalte B berücksichtigt wird.
Die Entscheidung, ob ein Index für mehrere Spalten oder ein Index für eine Spalte (bzw. eine Kombination aus beiden) erstellt werden soll, ist eine Frage des Abwägens, die selten eindeutig beantwortet werden kann. Häufig gibt es mehrere mögliche Lösungen. Wenn Sie beispielsweise gelegentlich nur Spalte A, gelegentlich nur Spalte B und manchmal beide Spalten abfragen, sind folgende Vorgehensweisen möglich:
- Erstellen Sie zwei separate Indizes für Spalte A und Spalte B.
- Erstellen Sie einen Index für mehrere Spalten für Spalten A und B. Dieser Index ist typischerweise effizienter für Abfragen, bei denen beide Spalten durchsucht werden. Für Abfragen, bei denen lediglich Spalte A durchsucht wird, ist dieser Index langsamer als ein Index, der nur für Spalte A erstellt wurde. Dieser Index wäre wenig hilfreich für Abfragen, bei denen nur Spalte B abgefragt wird. Um diesen Nachteil auszugleichen, können Sie einen zusätzlichen Index für Spalte B erstellen.
- Erstellen Sie alle drei Indizes: einen Index für Spalte A, einen für Spalte B und einen Index für mehrere Spalten für Spalten A und B. Dies wäre nützlich, wenn alle drei Abfragetypen oft ausgeführt werden und die Tabelle häufiger abgefragt als aktualisiert wird.