Überprüfen, ob Attributindizes in Abfragen von ArcObjects verwendet werden?

11

Wir haben einige Software als Teil eines größeren Projekts, das mit ArcObjects über .NET geschrieben wurde. Diese Software migriert und führt Daten aus mehreren Datei-Geodatabases in einem Schema zu einer einzelnen Datei-Geodatabase in einem ähnlichen, aber unterschiedlichen Schema zusammen. Einige Schritte bei der Migration umfassen das Nachschlagen einer vorhandenen Zeile und das Aktualisieren mit Daten aus einer anderen Tabelle. Dies kann sehr langsam werden, wenn die Ziel-Geodatabase groß ist. Daher habe ich einige Attributindizes für mehrere Felder hinzugefügt, um die Abfrage- / Aktualisierungsleistung zu verbessern.

Gibt es eine Möglichkeit, um zu bestätigen, dass die Abfragen die neuen Attributindizes verwenden, und möglicherweise, wie die Abfrage ausgeführt wird?

Ich denke, ich suche wirklich nach dem Äquivalent eines Abfrageplans - ähnlich wie EXPLAIN PLANin Oracle.

Die Abfragen befinden sich in einer Datei-Geodatabase, die ArcObjects direkt verwendet (kein RDBMS-Backend oder SQL).

Mücke
quelle
Haben Sie die Leistung mit und ohne Attributindizes zeitlich festgelegt? Ich denke, das ist der einzige Weg zu wissen, dass sie eine Wirkung haben.
blah238
Ich führe jetzt Leistungstests mit verschiedenen Datensatzgrößen durch. Ich werde versuchen, Ergebnisse zu veröffentlichen, wenn ich sie erhalte.
Mücke
Ich habe in den ArcObjects-Klassenbibliotheken nach etwas ähnlichem wie der Smallworld Magik- is_size_fast?Methode gesucht , die true zurückgibt, wenn Indizes verwendet werden, aber ich konnte keinen entsprechenden ArcObjects-Aufruf sehen.
Mücke
fGDB ist das ESRI-eigene Datenbankformat. Es gibt eine API, mit der Sie auf Daten ohne ESRI-Objekte zugreifen können. Ich bezweifle jedoch, dass dies viel Licht auf Ihr Problem werfen würde. Die Verwendung von Angaben erfolgt automatisch und kann nicht erkannt oder bestätigt werden. Ich stimme blah238 zu, das ist der einzige Weg, um sicher zu sagen. Die Optionen "einzigartig" und "aufsteigend" können einen großen Unterschied haben, verwenden Sie diese Optionen jedoch nur, wenn Sie sich der Eindeutigkeit und / oder des Aufstiegs absolut sicher sind.
Michael Stimson
@ blah238 Ich denke, Sie könnten Ihren Kommentar in eine Antwort verwandeln.
PolyGeo

Antworten:

1

File Geodatabase ist Esris eigenes Datenbankformat. Es gibt eine API , mit der Sie ohne ArcObjects auf Daten zugreifen können. Ich bezweifle jedoch, dass dies viel Licht in Ihr Dilemma bringen würde.

Die Verwendung von Indizes erfolgt auf Datenbankebene automatisch und kann nur aufgrund der Aktualität der Funktionen, die sie verwenden, erkannt oder bestätigt werden.

Ich stimme blah238 zu. Die einzige Möglichkeit, dies mit Sicherheit festzustellen, besteht darin, mit und ohne erstellte Indizes zu arbeiten und den Zeitunterschied zu vergleichen.

Die Optionen "eindeutig" und "aufsteigend" zum Erstellen eines Index können einen großen Unterschied haben. Verwenden Sie diese Optionen jedoch nur, wenn Sie sich der Eindeutigkeit und / oder des Aufstiegs absolut sicher sind , falls die Daten nicht geeignet sind, wird der Index entweder nicht erstellt oder, wenn Es baut sich auf, wirkt sich wahrscheinlich eher nachteilig auf die Leistung aus als zu verbessern.

Michael Stimson
quelle