Le Conseil de l'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 »