Index attributaires dans la géodatabase

Disponible avec une licence Standard ou Advanced.

ArcGIS utilise des indexes pour localiser rapidement des données. Les index attributaires permettent de localiser les enregistrements qui répondent à une requête attributaire et les index spatiaux permettent de localiser les entités qui répondent à une requête spatiale.

Les index attributaires peuvent accélérer les jointures et autres requêtes attributaires sur les tables, classes d’entités, shapefiles ou classes de relations attribuées. Un index attributaire constitue pour ArcGIS un autre moyen d’extraire les enregistrements d’une table. Pour la plupart des types de requêtes attributaires, il est plus rapide de rechercher un enregistrement avec un index que de parcourir la totalité de la table en commençant par le premier enregistrement.

Une fois que vous avez des données dans une table, une classe d’entités, un shapefile ou une classe de relations attribuées existant(e), vous pouvez créer des index attributaires pour les champs que vous interrogez fréquemment. Dans l’idéal, vous souhaitez créer des index sur les colonnes avec des valeurs uniques ou quasiment uniques. Créez uniquement les index dont vous avez vraiment besoin, car chaque index ajouté ralentit légèrement les mises à jour apportées à la classe d’entités. Chaque fois que vous modifiez une classe d’entités contenant un index attributaire, ArcGIS ou la SGBD exécutera la maintenance sur l’index. Évitez de créer un index sur un champ fréquemment modifié ou pour les champs contenant très peu de valeurs distinctes, comme Yes ou No, puisque ces index pourraient être contre-productifs en matière de performance.

Des index attributaires peuvent être créés en accédant à la boîte de dialogue Properties (Propriétés) dans ArcGIS Pro ou avec l’outil de géotraitement Ajouter un index attributaire. Une fois un index ajouté, vous pouvez le supprimer et le rajouter à tout moment.

Les index attributaires peuvent être créés de différentes façons. Ils peuvent être créés pour un seul ou plusieurs champs, ils peuvent être uniques, et pour certaines géodatabases, ils peuvent être créés en ordre croissant ou décroissant. Cette rubrique constitue uniquement une brève introduction pour ces concepts. Si vous choisissez une stratégie d’indexation pour une géodatabase d’entreprise, reportez-vous à la documentation de votre SGBD pour obtenir des informations plus détaillées.

Créer des index attributaires dans ArcGIS Pro

Des index attributaires peuvent être créés pour des champs uniques ou multiples dans un jeu de données en cliquant avec le bouton droit sur la classe d’entités de la géodatabase ou sur le nom de table dans la fenêtre Catalog (Catalogue) et en accédant sur la boîte de dialogue Properties (Propriétés).

  1. Dans la fenêtre Catalog (Catalogue), cliquez avec le bouton droit sur la table, la classe d’entités, le shapefile ou la classe de relations attribuées pour laquelle/lequel vous souhaitez créer un index et sélectionnez Properties (Propriétés).
  2. Sélectionnez l’onglet Indexes (Index).

    La section Index attributaire affiche les index existants pour ce jeu de données.

    Remarque :

    L’index FDO_OBJECTID est créé et utilisé par la géodatabase pour identifier de façon unique chaque entité et ne peut pas être supprimé. Si vous cliquez sur le FDO_OBJECTID, la section Fields affiche le champ pour lequel cet index a été créé.

  3. Pour ajouter un nouvel index attributaire, cliquez sur Add (Ajouter).
  4. Pour Name (Nom), saisissez le nom pour le nouvel index.
  5. En option, cochez la case Unique (Unique) si vos valeurs de champs sont uniques. Cochez la case Croissant pour créer un index croissant.

    Les paramètres Unique (Unique) et Ascending (Croissant) ne sont pas utilisés dans les géodatabases de fichier et peuvent rester désélectionnés. Le paramètre Ascending (Croissant) n’est pas utilisé dans Oracle ou SQL Server.

  6. Depuis la liste Fields Available (Champs disponibles), cliquez sur le champ ou les champs pour le(s)quel(s) vous souhaitez créer cet index.
    Remarque :

    Les index multi-colonnes ne sont pas pris en charge dans les géodatabases fichier.

  7. Cliquez sur le bouton de la flèche droite pour déplacer le champ ou les champs vers la liste Fields selected (Champs sélectionnés).
  8. En option, si plusieurs champs ont été sélectionnés, utilisez les flèches vers le haut et vers le bas pour changer l’ordre des champs dans l’index.
  9. Cliquez sur OK pour créer l’index.
  10. Cliquez sur OK pour fermer la boîte de dialogue Propriétés.

Création d’index attributaires à l’aide du géotraitement

Le jeu d’outils Indexes (Index) dans la boîte à outils Outils de gestion des données offre deux outils principaux pour créer et supprimer des index attributaires.

Jeu d’outils Index contenu dans la boîte à outils Gestion des données

L’outil Ajouter un index attributaire ajoute un index mono-colonne ou multi-colonnes à une table, une classe d’entités ou une classe de relations attributaires existante. Il est disponible avec n’importe quelle licence ArcGIS, mais peut être utilisé uniquement avec des géodatabases d’entreprise si vous possédez une licence ArcGIS Desktop Standard ou Advanced.

L’outil Supprimer un index attributaire supprime un index mono-colonne ou multi-colonnes d’une table, une classe d’entités ou une classe de relations attributaires existante. Cet outil est également disponible avec toute licence ArcGIS.

Noms d’index attributaires

Lorsque vous nommez un index dans une géodatabase d’entreprise, il est judicieux d’attribuer à l’index un nom qui reflète la table ou même les colonnes indexées. Toutefois, si le nom de la table indexée est modifié, votre nom d’index ne peut plus indiquer la table qui est indexée. Certaines organisations trouvent utile de donner à l’index un nom qui indique qu’il s’agit d’un index, en ajoutant par exemple IDX au début ou la fin du nom. Par exemple, un index sur une table d’adresses peut s’appeler ADRS_APK_IDX, où ADRS indique que cet index est sur la table d’adresses, APK représente la colonne qui est indexée et IDX signale qu’il s’agit d’un index.

Tout comme les noms de table, les éléments suivants sont vrais pour les noms d’index dans les géodatabases :

  • Doivent être uniques dans la base de données
  • Doivent commencer par une lettre
  • Ne peuvent pas contenir d’espaces
  • Cannot contain spacesNe peuvent pas contenir de mots réservés

Il n’existe aucune restriction sur la manière de nommer un index attributaire dans une géodatabase fichier.

ArcGIS impose une limite de 16 caractères pour la longueur des noms d’index attributaires. Cette limite est basée sur la plus petite longueur autorisée dans les bases de données gérées pour faciliter la distribution et le partage de données entre des géodatabases différentes.

Index uniques

Lorsque vous créez un index, une option vous permet de créer l’index comme étant unique. Sélectionnez cette option si l’attribut a des valeurs uniques dans chaque enregistrement. Cela accélère l’exécution de requêtes sur cet attribut, car la base de données peut arrêter la recherche une fois la première valeur correspondante trouvée.

Remarque :

Vous ne pouvez pas modifier une classe d’entités figurant dans un jeu de données d’entité avec une autre classe d’entités comportant un index unique sur un champ défini par l’utilisateur.

Remarque :

Le paramètre Unique n’est pas utilisé dans les géodatabases fichier et peut rester non coché.

Index croissants et décroissants

Lorsque vous créez un index, une option permet de créer l’index comme étant croissant, ou si cette option n’est pas activée, comme étant décroissant. Un index croissant est géré en ordre croissant. Par exemple, les noms de ville Athens, Berlin, London et Paris apparaissent dans cet ordre dans un index croissant, alors que dans un index décroissant, ils s’affichent dans l’ordre Paris, London, Berlin et Athens.

Dans presque tous les cas, le sens dans lequel l’index est géré ne changera quasiment rien (ou rien du tout) à la vitesse d’extraction, car pour la plupart des requêtes, les index sont parcourus aussi efficacement dans les deux sens.

Remarque :

Le paramètre Croissant n’est pas utilisé dans des géodatabases fichier, Oracle ou SQL Server et peut rester non coché.

Index mono-colonne et multi-colonnes

Les géodatabases fichier ne prennent pas en charge les index multi-colonnes. La boîte de dialogue Classe d’entités et ne vous permet pas de spécifier un index multi-colonnes. L’outil Ajouter un index attributaire vous permet de spécifier un index multi-colonnes mais, bien que l’index que vous créez semble être un index multi-colonnes lorsqu’il est affiché à partir de la boîte de dialogue Properties (Propriétés) dans la fenêtre Catalog (Catalogue), il s’agit en fait d’un index séparé sur chaque champ.

Des index peuvent être créés pour une seule colonne ou plusieurs colonnes dans une géodatabase. Les index multi-colonnes sont utiles si vous spécifiez fréquemment deux ou trois champs dans une requête simultanément. Dans ce cas, l’index multi-colonnes peut fournir des performances de requête plus rapides que deux ou trois index distincts, un sur chaque champ.

L’ordre dans lequel les champs apparaissent dans un index multi-colonnes est important. Dans un index multi-colonnes avec la colonne A précédant la colonne B, la colonne A sera utilisée pour mener la recherche initiale. En outre, un tel index sera beaucoup plus utile pour des requêtes qui impliquent la colonne A uniquement que pour des requêtes impliquant la colonne B uniquement.

La décision de créer un index multi-colonnes ou mono-colonne, ou une combinaison des deux implique des compromis et la meilleure décision coule rarement de source. Cependant, il existe souvent différentes solutions qui peuvent fonctionner. Par exemple, si vous interrogez parfois uniquement la colonne A, parfois uniquement la colonne B, et parfois les deux colonnes, vous pouvez choisir l’une des approches suivantes :

  • Créer deux index distincts sur A et B.
  • Créer un index multi-colonnes sur A et B. Cet index serait en général plus efficace pour les requêtes impliquant les deux colonnes. Pour les requêtes qui impliquent uniquement A, cet index serait plus lent qu’un index sur A uniquement. Cet index serait de peu d’utilité pour les requêtes impliquant uniquement B. Pour compenser, vous pourriez créer un index supplémentaire sur B.
  • Créez les trois index : un index sur A, un sur B et un index à plusieurs colonnes sur A et B. Cette approche est judicieuse si les trois types de requêtes sont courants et si la table est plus souvent interrogée qu’elle n’est mise à jour.