Pourquoi les jointures simples sur de petits ensembles de données ralentissent-elles si ArcMap?

13

ArcGIS 9.3.1, ArcInfo. J'ai une petite géodatabase fichier et des classes de fonctionnalités SDE (quelques milliers d'enregistrements chacune, 50 colonnes) sur lesquelles je fais des jointures d'attributs. Après les jointures, le dessin de la carte est ralenti de sous-seconde à plusieurs secondes à chaque fois, parfois plus. Ajoutez des requêtes de définition qui référencent les champs de la jointure et il est temps d'aller chercher une tasse de café tout en redessinant. Des idées sur pourquoi cela se produit? Quelqu'un d'autre a déjà vécu cela?

Chad Cooper
la source
6
Vos champs de jointure sont-ils indexés?
Derek Swingley
Non, ils ne sont pas indexés.
Chad Cooper du
9
Pour répondre à votre dernière question, Chad: oui, les performances de jointure sont médiocres sur chaque version d'ArcGIS. Les énormes progrès de la vitesse de calcul au cours de la dernière décennie n'ont toujours pas été en mesure de suivre la dégradation de routine des performances à chaque nouvelle version. C'est l'une des principales raisons pour lesquelles je ne peux pas l'utiliser pour des travaux analytiques. (Pour les travaux cartographiques, c'est une autre histoire.)
whuber
@ La question de Swingley peut être la réponse à votre problème. Rejoindre une colonne non indexée ralentira sérieusement les choses. Vous obtiendrez probablement une grande augmentation de la vitesse simplement en créant un index sur ce champ. Vous devrez peut-être également déplacer des éléments d'une géodatabase fichier vers SDE; L'accès n'est pas la chose la plus rapide sur le bloc, donc passer à SqlServer ou Oracle pourrait également vous aider avec des problèmes de vitesse.
Michael Todd
2
@Jay: oui Swingley a été le premier à mettre la clé en place et a obtenu 3 votes positifs, mais vous êtes allé plus loin et avez décrit une méthode. Tout le monde gagne. :) Nous cherchons à construire plus que la bonne réponse, mais aussi la meilleure. Ils ne se trouvent pas toujours simultanément dans un même conteneur.
matt wilkie

Réponses:

10

Je dois régulièrement me joindre à un autre groupe de fonctionnalités: SDE featureclass sans index sur quoi que ce soit.

La copie vers un fichier local de géodatabase + builds d'index accélère vraiment les choses.

Comme c'est temporaire, je le fais généralement sur un disque RAM http://t.co/EBTeOem .

Selon vos données, l'indexation des champs que vous utilisez pour symboliser ou des champs utilisés dans la requête de définition peut vous aider.

Jay Cummins
la source
Je n'ai jamais pensé à indexer des champs sur lesquels la symbologie est basée. Trouvez-vous que cela augmente les performances de rendu sur les rafraîchissements / rafraîchissements de carte?
Chad Cooper du
Je vais modifier la réponse - les champs d'indexation utilisés pour le rendu ne seront pas utiles dans tous les cas et je ne sais pas avec certitude si cela aide pour la géodatabase fichier. C'est plus une habitude basée sur ma mémoire de la performance des sde featureclasses dans le passé (en utilisant se_toolkit).
Jay Cummins du