Publié le :
ETL CREATION_INTERNE

Création d'un index

Ce code est également disponible en : Deutsch English Español
En attente de validation
Les index doivent être créés pour les colonnes ayant de nombreuses valeurs uniques ou celles fréquemment utilisées dans les jointures. Il est recommandé de limiter le nombre d'index pour réduire l'espace disque et les coûts de mise à jour. Les index sont particulièrement efficaces pour les requêtes qui récupèrent un nombre relativement faible de lignes (moins de 15%). L'indexation de petites tables ou de colonnes avec peu de valeurs distinctes n'entraîne généralement pas de gain de performance. Le nom d'un index simple doit correspondre au nom de la colonne qu'il indexe, tandis qu'un index composite ne peut pas avoir le même nom qu'une colonne existante.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (CREATE TABLE ... LIKE) à partir d'une table implicitement disponible (COUNTRIES, souvent de SASHELP) ou des tables créées.

1 Bloc de code
PROC SQL Data
Explication :
Cet exemple crée une nouvelle table nommée `newcountries` en utilisant la structure de la table `countries`. Ensuite, il crée un index simple nommé `area` sur la colonne `area` de la table `newcountries`. Le nom de l'index correspond ici au nom de la colonne.
Copié !
1PROC SQL;
2 create TABLE newcountries
3 like countries;
4 create index area
5 on newcountries(area);
6QUIT;
2 Bloc de code
PROC SQL
Explication :
Cet exemple crée un index composite nommé `places` sur les colonnes `name` et `continent` de la table `newcountries`. Un index composite est utilisé pour optimiser les requêtes impliquant plusieurs colonnes simultanément.
Copié !
1PROC SQL;
2 create index places
3 on newcountries(name, continent);
4QUIT;
3 Bloc de code
PROC SQL
Explication :
Cet exemple illustre la création d'un index unique composite. L'ajout du mot-clé `UNIQUE` garantit que chaque combinaison de valeurs dans les colonnes `name` et `continent` est unique. Toute tentative d'insérer ou de mettre à jour une ligne qui violerait cette unicité serait rejetée par SAS.
Copié !
1PROC SQL;
2 create TABLE newcountries
3 like countries;
4 create unique index places
5 on newcountries(name, continent);
6QUIT;
4 Bloc de code
PROC SQL
Explication :
Cet exemple montre comment supprimer un index existant d'une table. La commande `DROP INDEX` suivie du nom de l'index et de la table cible est utilisée pour retirer l'index `places` de la table `newcountries`.
Copié !
1 
2PROC SQL;
3drop index places from newcountries;
4QUIT;
5 
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« En PROC SQL, l'indexation est l'outil ultime pour transformer une recherche séquentielle (balayage complet de la table) en un accès direct ultra-rapide. C'est la différence entre feuilleter tout un dictionnaire ou utiliser ses onglets alphabétiques.

La règle des 15 % : C'est le seuil critique. Un index est une structure séparée que SAS doit consulter avant d'aller lire la table. Si votre requête (WHERE) doit ramener plus de 15 % des lignes, le coût d'aller-retour entre l'index et la table devient plus élevé qu'une simple lecture complète. Dans ce cas, SAS ignorera intelligemment l'index.

Sélectivité et Unicité : Plus une colonne a de valeurs uniques (haute cardinalité), plus l'index est efficace. L'index UNIQUE (comme sur name et continent) remplit un double rôle : il accélère les recherches et sert de "garde-fou" pour l'intégrité de vos données en interdisant physiquement les doublons.

Le coût de maintenance : Chaque index consomme de l'espace disque (fichier .sas7bndx) et ralentit les opérations d'écriture (INSERT, UPDATE). À chaque fois que vous modifiez une ligne, SAS doit mettre à jour l'index. C'est pourquoi il faut limiter les index aux colonnes réellement utilisées dans les jointures (JOIN) ou les filtres fréquents.

Nommage et Structure : Notez la subtilité syntaxique : l'index simple doit porter le nom de sa colonne. L'index composite, lui, est une entité à part entière qui couvre plusieurs colonnes ; il ne doit donc pas entrer en conflit avec un nom de colonne existant pour éviter toute confusion lors de l'exécution des requêtes.

Mon conseil : Avant de créer un index, vérifiez toujours si votre table est de taille suffisante. Indexer une petite table (moins de quelques milliers de lignes) est souvent contre-productif, car SAS peut lire la table entière en mémoire plus vite qu'il ne peut consulter un index sur disque »