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. Il est conseillé de créer des index sur les colonnes avec des valeurs uniques ou quasiment uniques. Chaque index ajouté ralentit légèrement les mises à jour apportées à la classe d’entités ou à la table. Chaque fois que vous modifiez une classe d’entités ou une table contenant un index attributaire, ArcGIS ou le système de gestion de base de données (SGBD) met à jour l’index. Évitez de créer un index sur un champ qui est modifié plus fréquemment qu’il n’est interrogé ou pour les champs contenant peu de valeurs distinctes, comme Yes ou No, puisque ces index pourraient être contre-productifs en matière de performance.
Vous pouvez créer des index attributaires dans la boîte de dialogue Properties (Propriétés) dans ArcGIS AllSource 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 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. Ce page d’aide constitue uniquement une brève présentation de 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 un index attributaire dans la fenêtre Catalogue
Vous pouvez créer des index attributaires 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 géodatabase ou sur le nom de table dans la fenêtre Catalog (Catalogue) et en accédant à la boîte de dialogue Properties (Propriétés).
Remarque :
Lorsque vous ouvez la table attributaire dans ArcGIS AllSource, les champs indexés ont un astérisque (*) en regard de leur nom.
- 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 lesquels vous souhaitez créer un index et sélectionnez Properties (Propriétés).
- Cliquez sur l'onglet Index.
La section Index attributaire affiche les index existants pour ce jeu de données.
Remarque :
Lorsque vous créez une table ou une classe d’entités dans ArcGIS, ce dernier ajoute un index unique au champ d’ID d’objet. L’index se nomme FDO_OBJECTID dans les géodatabases fichier et les géodatabases mobiles. Dans les géodatabases d’entreprise, l’index se nomme r_#_sde_rowid_uk. L’index est utilisé par la géodatabase pour identifier de façon unique chaque entité ou ligne et ne peut pas être supprimé.
- Pour ajouter un index attributaire, cliquez sur Add (Ajouter).
- Pour Name (Nom), saisissez le nom pour le nouvel index.
- 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.
- Dans la liste Fields Available (Champs disponibles), cliquez sur le champ pour lequel vous souhaitez créer cet index, puis sur la flèche pour déplacer le champ vers la liste Fields selected (Champs sélectionnés).
Pour appliquer l’index à plusieurs champs, répétez cette étape pour chaque champ à indexer.
- 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.
Consultez la section Index mono-colonne ou multi-colonnes ci-dessous pour déterminer l’ordre à utiliser.
- Cliquez sur OK pour créer l’index.
- Cliquez sur OK pour fermer la boîte de dialogue Propriétés.
Créer un index attributaire avec un outil de géotraitement
Le jeu d’outils Indexes (Index) de la boîte à outils Gestion des données fournit deux outils concernant les index attributaires : un pour créer un index attributaire et l’autre pour supprimer un index attributaire.
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.
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.
Noms d’index attributaires
Lorsque vous nommez un index, 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.
Index uniques
Si chaque valeur attributaire dans un champ est unique, vous pouvez créer l’index comme unique. Cela accélère le temps d’exécution de requêtes sur ce champ attributaire, car la base de données peut arrêter la recherche une fois la première valeur correspondante trouvée.
En cas de définition sur plusieurs colonnes, vous pouvez créer un index unique si la combinaison des valeurs dans toutes les colonnes est unique.
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.
Index croissants ou décroissants
Lorsque vous créez un index, vous pouvez préciser s’il est croissant ou 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.
Index mono-colonne ou multi-colonnes
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, comme illustré dans l’exemple suivant.
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.
Vous avez un commentaire à formuler concernant cette rubrique ?