Bases des bases de données
On a créé un index en arbre B+ sur la colonne NumMembre d'une table Membre de 1 million de lignes. Quelle combinaison associe correctement l'effet que l'on peut généralement attendre et son coût ?
- ALes recherches comme WHERE NumMembre = 12345 deviennent plus rapides, mais les écritures ralentissent parce que l'index doit aussi être mis à jour à chaque ajout ou modification de ligne
- BLes recherches sur toutes les colonnes deviennent plus rapides, sans aucun coût
- CLes lignes de la table sont triées par NumMembre, si bien que toutes les recherches deviennent plus rapides, et l'espace de stockage nécessaire est divisé par deux
Afficher la réponse et l'explication
Réponse : A. Les recherches comme WHERE NumMembre = 12345 deviennent plus rapides, mais les écritures ralentissent parce que l'index doit aussi être mis à jour à chaque ajout ou modification de ligne
Un index est une structure de données qui permet de trouver rapidement, à partir d'une valeur d'une colonne donnée, l'emplacement des lignes qui contiennent cette valeur ; les bases de données relationnelles utilisent couramment des arbres B+. Sans index, trouver la ligne WHERE NumMembre = 12345 exige d'examiner dans l'ordre 1 million de lignes (parcours complet de la table, ou full table scan), alors qu'avec un arbre B+ on trouve la ligne en suivant seulement quelques niveaux de la racine à une feuille. Si chaque nœud se ramifie en 100, par exemple, 100 × 100 × 100 = 1 million ; environ 3 niveaux suffisent donc. Comme les feuilles d'un arbre B+ sont chaînées dans l'ordre des valeurs, l'index peut aussi servir pour des recherches par plage comme BETWEEN et pour le tri avec ORDER BY. En revanche, l'index doit être mis à jour à chaque insertion, modification ou suppression de ligne, si bien que les écritures ralentissent, et il faut de l'espace de stockage pour l'index. Les recherches sur des colonnes sans index ne deviennent pas plus rapides.
Continuer : 9 autres questions sur Bases des bases de données