Bonsoir,
Envoyé par
iberserk
... et qu'il est référencé par tous les index non cluster...
J’avais vaguement entendu parler de cela il y a peu, mais sans y prêter attention. A vue de nez, on peut dire que ce principe de référence systématique à l’index cluster est une calamité, puisqu’en plus de traverser les niveaux de l’index non cluster, il faut que le SGBD se paye aussi la traversée de ceux de l’index cluster avant d’accéder aux données utiles de la table ! (A moins que celles-ci soient hébergées par l’index non cluster). Avez-vous plus d’informations à ce sujet ? De mon côté, je vous invite à voir comment sont organisés les index avec DB2, lequel évite soigneusement ces accès supplémentaires bien mal venus.
Si votre curiosité est piquée, je fournis ici la description d'une organisation "économe" en me basant donc sur DB2 (cf. paragraphe « Des index »), mais je devrais modifier cette partie de mon message pour préciser que si avec DB2 tous les index attaquent directement les pages de données, d’autres SGBD mettent en oeuvre des méthodes différentes...
Pour une description plus approfondie, avec des dessins, voyez aussi ici et là. En me relisant, je me rends compte qu’à l’époque je n’avais pas examiné l’organisation des index selon les autres SGBD et, suite à votre remarque, je ressors cette réponse que j’avais faite à CinePhil qui avait formulé une question que je trouvais étrange et qui maintenant prend tout son sens :
« Pourquoi voudriez-vous que DB2 tienne compte de l’index de la clé primaire (à supposer que celle-ci ait été définie...) quand vous créez un index sur le nom de la vache ? En revanche, si cela vous arrange, vous pouvez vous-même obtenir l’équivalent ».
Je signale en passant que dans cette réponse, la formule « obtenir l’équivalent » ne remet évidemment pas en cause le principe DB2 de l’accès direct systématique aux pages de données à partir des feuilles de l’index, il s’agit seulement d’inclure dans la clé de cet index la (ou les) colonne(s) de la clé primaire.
Merci iberserk pour l’information.
Partager