Bases des bases de données

Pour une table Membre de 1 million de lignes, on envisage de créer un index en arbre B+ sur chacune des colonnes NumMembre (toutes différentes), Prefecture (47 valeurs) et Sexe (2 valeurs, réparties à peu près à moitié). Lors d'une recherche qui précise dans la clause WHERE la valeur d'une seule colonne, sur quelle colonne un index sera-t-il probablement le moins efficace ?

  1. APrefecture
  2. BSexe
  3. CNumMembre
Afficher la réponse et l'explication

Réponse : B. Sexe

Un index est efficace lorsque les lignes qui satisfont la condition se réduisent à une petite fraction de l'ensemble. Chaque NumMembre est différent ; une seule ligne correspond donc, et l'index y mène directement. Prefecture a 47 valeurs ; si les membres sont répartis uniformément, une valeur réduit la recherche à environ 1 million ÷ 47 ≈ 21 000 lignes (environ 2 % du total). Sexe a 2 valeurs réparties à peu près à moitié ; l'une ou l'autre valeur correspond donc à environ 500 000 lignes (environ 50 %). Extraire une par une autant de lignes en passant par un index est souvent plus lent qu'un parcours complet qui lit la table du début à la fin ; l'optimiseur du SGBD peut donc choisir un plan d'exécution qui n'utilise pas l'index. Ainsi, plus une colonne a de valeurs distinctes et plus une condition sur elle réduit fortement le nombre de lignes (plus elle est sélective), plus un index sur cette colonne est efficace.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. Parmi les bases de données dites NoSQL, quelle description des caractéristiques d'une base clé-valeur est généralement correcte ?
  2. Quelle description du théorème CAP est appropriée pour une base de données distribuée qui conserve des copies des données sur plusieurs serveurs ?
  3. Dans la terminologie des bases de données relationnelles, quel terme correspond à une ligne d'une table (relation) ?
  4. Dans une table d'une base de données relationnelle, quelle condition la colonne (ou l'ensemble de colonnes) désignée comme clé primaire doit-elle remplir ?
  5. Dans une table des employés Employe(NumEmploye, Email, Nom, Service), NumEmploye et Email sont tous deux différents pour chaque employé et jamais NULL. Nom et Service peuvent être identiques à ceux d'autres employés. Quelle proposition énumère toutes les clés candidates de cette table ?