Vous vérifiez que les index d'attribut sont utilisés dans la requête d'ArcObjects?

11

Nous avons certains logiciels dans le cadre d'un projet plus vaste écrit à l'aide d'ArcObjects via .NET. Ce logiciel migre et fusionne les données de plusieurs géodatabases fichier dans un schéma vers une géodatabase fichier unique dans un schéma similaire mais différent. Certaines étapes de la migration impliquent de rechercher une ligne existante et de la mettre à jour avec les données d'une table différente. Cela peut devenir très lent lorsque la géodatabase de destination est volumineuse, j'ai donc ajouté des index d'attributs multi-champs pour améliorer les performances de requête / mise à jour.

Existe-t-il un moyen de confirmer que les requêtes utilisent les nouveaux index d'attributs et peut-être comment la requête est exécutée?

Je suppose que je recherche vraiment l'équivalent d'un plan de requête - quelque chose de similaire à EXPLAIN PLANOracle.

Les requêtes se trouvent sur une géodatabase fichier utilisant directement ArcObjects (pas de backend RDBMS ou SQL).

Moucheron
la source
Avez-vous chronométré les performances avec et sans index d'attributs? Je pense que c'est la seule façon de savoir qu'ils ont un effet.
blah238
J'exécute des tests de performances maintenant avec différentes tailles de jeu de données. J'essaierai de publier les résultats lorsque je les obtiendrai.
Gnat
J'ai cherché dans les bibliothèques de classes ArcObjects quelque chose de similaire à la is_size_fast?méthode de Smallworld Magik , qui renvoie vrai si des index sont utilisés, mais je n'ai pas pu voir un appel ArcObjects équivalent.
Gnat
fGDB est le format de base de données propre à ESRI, il existe une API qui vous permettra d'accéder aux données sans objets ESRI mais je doute que cela éclairerait beaucoup votre dilemme. L'utilisation d'indices est automatique et ne peut être ni détectée ni confirmée. Je suis d'accord avec blah238, c'est la seule façon de le dire avec certitude. Les options «unique» et «ascendant» peuvent avoir une grande différence, mais n'utilisez ces options que si vous êtes absolument certain de l'unicité et / ou de l'ascension.
Michael Stimson,
@ blah238 Je pense que vous pourriez transformer votre commentaire en réponse.
PolyGeo

Réponses:

1

La géodatabase fichier est le propre format de base de données d'Esri, il existe une API qui vous permettra d'accéder aux données sans ArcObjects, mais je doute que cela éclairerait beaucoup votre dilemme.

L'utilisation d'indices est automatique, au niveau de la base de données, et ne peut être détectée ou confirmée que par la rapidité des fonctions qui les utilisent.

Je suis d'accord avec blah238 la seule façon de savoir avec certitude est de courir avec et sans index construits et de comparer la différence de temps.

Les options «unique» et «ascendant» pour la construction d'un index peuvent avoir une grande différence, mais n'utilisez ces options que si vous êtes absolument certain de l'unicité et / ou de l'ascension, si les données ne conviennent pas, l'index ne sera pas construit ou, si il ne construit, sont susceptibles d'affecter les performances plutôt que d'améliorer.

Michael Stimson
la source