Warum verlangsamen einfache Joins für kleine Datasets ArcMap so stark?

13

ArcGIS 9.3.1, ArcInfo. Ich habe einige kleine File-Geodatabase- und SDE-Feature-Classes (jeweils einige tausend Datensätze, 50 Spalten), für die Attribut-Joins ausgeführt werden. Nach den Verknüpfungen wird das Zeichnen der Karte jedes Mal von unter einer Sekunde auf mehrere Sekunden verlangsamt, manchmal sogar mehr. Fügen Sie einige Definitionsabfragen hinzu, die auf Felder aus dem Join verweisen, und es ist Zeit, beim Neuzeichnen eine Tasse Kaffee zu holen. Irgendwelche Ideen, warum das passiert? Hat das noch jemand erlebt?

Chad Cooper
quelle
6
Sind Ihre Join-Felder indiziert?
Derek Swingley
Nein, sie sind nicht indiziert.
Chad Cooper
9
Zur Beantwortung Ihrer letzten Frage, Chad: Ja, ich habe bei jeder Version von ArcGIS eine schlechte Join-Leistung festgestellt. Die enormen Fortschritte bei der Rechengeschwindigkeit in den letzten zehn Jahren konnten mit den routinemäßigen Leistungseinbußen bei jeder neuen Version noch nicht Schritt halten. Das ist einer der Hauptgründe, warum ich es nicht für analytische Arbeiten verwenden kann. (Für kartografische Arbeiten ist es eine andere Geschichte.)
whuber
@ Swingleys Frage könnte die Antwort auf Ihr Problem sein. Der Beitritt zu einer nicht indizierten Spalte verlangsamt die Arbeit erheblich. Sie werden wahrscheinlich einen großen Geschwindigkeitszuwachs erzielen, wenn Sie einfach einen Index für dieses Feld erstellen. Möglicherweise müssen Sie auch Elemente aus einer File-Geodatabase in SDE verschieben. Der Zugriff ist nicht die schnellste Sache auf dem Block, daher kann Ihnen der Wechsel zu SqlServer oder Oracle auch bei Geschwindigkeitsproblemen helfen.
Michael Todd
2
@Jay: Ja, Swingley war der erste, der den Schlüsselstein angebracht hat, und hat drei positive Stimmen dafür erhalten. Sie sind jedoch noch weiter gegangen und haben eine Methode beschrieben. Jeder gewinnt. :) Wir wollen mehr als nur die richtige Antwort, sondern auch die beste. Sie befinden sich nicht immer gleichzeitig in einem einzigen Container.
Matt Wilkie

Antworten:

10

Ich muss mich regelmäßig einer anderen Depts-Feature-Class anschließen: SDE-Feature-Class ohne Indizes für irgendetwas.

Das Kopieren in eine lokale File-Geodatabase + Index-Erstellung beschleunigt die Dinge erheblich.

Da dies vorübergehend ist, mache ich dies normalerweise auf einer RAM-Disk http://t.co/EBTeOem .

Abhängig von Ihren Daten können Indexfelder, die Sie zum Symbolisieren verwenden, oder Felder, die in der Definitionsabfrage verwendet werden, hilfreich sein.

Jay Cummins
quelle
Nie darüber nachgedacht, Felder zu indizieren, auf denen die Symbologie basiert. Finden Sie, dass dies die Renderleistung beim Neuzeichnen / Aktualisieren von Karten erhöht?
Chad Cooper
Ich werde die zum Rendern verwendeten Antwortindizierungsfelder ändern, was nicht in jedem Fall hilfreich ist, und ich weiß nicht genau, ob dies für die File-Geodatabase hilfreich ist. Es ist eher eine Gewohnheit, die auf meiner Erinnerung daran basiert, wie sich SDE-Feature-Classes in der Vergangenheit entwickelt haben (mithilfe von se_toolkit).
Jay Cummins