Disponible avec une licence Standard ou Advanced.
Les index attributaires peuvent accélérer les requêtes attributaires sur les classes d'entités et les tables. 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 classe d'entités ou une table, créez des index attributaires pour les champs que vous interrogez fréquemment. 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 la classe d'entités, ArcGIS doit également mettre à jour les index. Si vous devez modifier fréquemment un champ, évitez de créer un index pour ce dernier dans la mesure du possible. Des index attributaires peuvent être créés en accédant à la boîte de dialogue Propriétés dans ArcCatalog ou à l'aide du géotraitement. 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 ArcSDE, reportez-vous à la documentation de votre SGBD pour obtenir des informations plus détaillées.
Création d'index attributaires dans ArcCatalog
Des index attributaires peuvent être créés pour un seul ou plusieurs champs dans une classe d'entités de géodatabase ou une table en cliquant avec le bouton droit sur le nom de table dans l'arborescence du catalogue et en accédant à la boîte de dialogue Propriétés.
- Dans l'arborescence du catalogue, cliquez avec le bouton droit de la souris sur la classe d'entités ou la table pour laquelle vous souhaitez créer un index, puis sélectionnez Propriétés.
- Cliquez sur l'onglet Index.
- Cliquez sur Ajouter.
- Saisissez un nom pour le nouvel index.
- Cochez la case Unique si vos valeurs de champs sont uniques. Cochez la case Croissant pour créer un index croissant.
Les paramètres Unique et Croissant ne sont pas utilisés dans les géodatabases fichier et peuvent rester désélectionnés. Le paramètre Croissant n'est pas utilisé dans les géodatabases Oracle ArcSDE. Les paramètres Unique et Croissant ne sont pas disponibles pour les géodatabases SQL Server ArcSDE.
- Cliquez sur le ou les champs pour lesquels vous voulez construire cet index.
- Cliquez sur la flèche vers la droite pour déplacer les champs vers la liste Champs sélectionnés.
- Utilisez les flèches vers le haut ou vers le bas pour modifier l'ordre des champs dans l'index.
- Cliquez sur OK.
- Cliquez sur Appliquer pour construire l'index ou cliquez sur OK pour construire l'index et fermer la boîte de dialogue Propriétés.
Création d'index attributaires à l'aide du géotraitement
Le jeu d'outils Index de la boîte à outils Gestion des données fournit deux outils essentiels pour créer et supprimer des index attributaires.
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. Cet outil est disponible avec toute licence ArcGIS.
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 ArcSDE, 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.
Similaire aux noms de table, les éléments suivants sont vrais pour les noms d'index dans les géodatabases ArcSDE :
- 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. Les noms d'index dans des géodatabases personnelles ne peuvent pas contenir d'espaces ou de mots réservés.
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
L'option Unique n'est pas utilisée dans les géodatabases fichier et peut rester non cochée. L'option Unique est disponible pour les géodatabase ArcSDE SQL Server. Elle n'est toutefois pas disponible dans la boîte de dialogue Ajouter un index attributaire lorsque les données source sont une classe d'entités enregistrée comme versionnée.
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.
Notez toutefois que vous ne pouvez pas modifier une classe d'entités qui a un index unique sur un champ défini par l'utilisateur dans une géodatabase personnelle. En outre, 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. Si vous tentez de modifier une géodatabase personnelle, ArcMap renvoie cette erreur :
Impossible de modifier une couche quelconque de la carte. Vérifiez si une couche ou une table contient un index unique sur une colonne utilisateur.Si vous avez un index unique sur un champ dans une géodatabase personnelle et que vous devez le modifier, utilisez ArcCatalog pour supprimer l'index unique et le recréer en tant qu'index non unique.
Index croissants et décroissants
L'option Croissant n'est pas utilisée dans des géodatabases fichier ou Oracle ArcSDE et peut rester non cochée. L'option Croissant est disponible pour les géodatabase ArcSDE SQL Server. Elle n'est toutefois pas disponible dans la boîte de dialogue Ajouter un index attributaire lorsque les données source sont une classe d'entités enregistrée comme versionnée.
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 Athènes, Berlin, Londres et Paris apparaissent dans cet ordre dans un index croissant, alors que dans un index décroissant, ils s'affichent dans l'ordre Paris, Londres, Berlin et Athènes.
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 et multi-colonnes
Les géodatabases fichier ne prennent pas en charge les index multi-colonnes. Les boîtes de dialogue Propriétés de la classe d'entités et Propriétés de la table ne vous permettent pas de spécifier un index multi-colonnes. L'outil Ajouter un index attributaire et ArcObjects vous permettent de spécifier un index multi-colonnes mais, bien que l'index que vous créez est un index multi-colonnes lorsqu'il est affiché à partir de la boîte de dialogue Propriétés de la classe d'entités ou Propriétés de la table dans ArcCatalog, 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 personnelle ou ArcSDE. 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 index sur B et un index multi-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.