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 PLAN
in Oracle.
Die Abfragen befinden sich in einer Datei-Geodatabase, die ArcObjects direkt verwendet (kein RDBMS-Backend oder SQL).
is_size_fast?
Methode gesucht , die true zurückgibt, wenn Indizes verwendet werden, aber ich konnte keinen entsprechenden ArcObjects-Aufruf sehen.Antworten:
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.
quelle