Bonsoir,
Envoyé par
SQLpro
Aujourd’hui"hui la plupart des SGBDR permettent de créer des index CLUSTERED. Dernier en date PostGreSQL.
C’était en quelle année ?
Envoyé par
SQLpro
une clef clustered sert de repère de ligne à tous les autres index ce qui fait que plus elle est grosse plus les index secondaires grossissent...
Le concept d’index cluster et la technique de « clusterisation » méritent d’être explicités, car les SGBD divergent à ce sujet. Par exemple, le problème que vous évoquez n’existe pas avec DB2, puisque dans son cas les index adressent tous directement les tables. Voir à ce propos les approches SQL Server et DB2 (lequel, pour mémoire, a permis la clusterisation dès le début, disons 1984).
Parfois les divergences sont bigrement sensibles, et on risque de tomber carrément dans le quiproquo. Extrait du document Présentation du système d’information ORACLE et introduction à SQL, par ORACLE France SA, décembre 1986, page 65 :
« Une autre technique pour l’amélioration des performances est la "clusterisation" (regroupement). En créant un "Cluster", vous demandez à ORACLE de juxtaposer physiquement ensemble des lignes en provenance de différentes tables. Cette technique accélère ainsi les requêtes de jointure car les lignes que vous êtes amené à rapprocher par l’opération de jointure sont déjà physiquement regroupées et stockées de manière consécutive dans une même page du disque. »
Autrement dit, le cluster (commande CREATE CLUSTER) sert ici à implanter les jointures en dur. J’avoue qu’à l’époque cela m’avait laissé, disons, septique et dubitatif, quand j’ai comparé avec DB2. Pendant ce temps là, des collègues qui utilisaient SQL/DS (frère aîné de DB2, né en 1981) pleuraient à chaude larmes car ils ne bénéficiaient pas des index cluster de son petit frère...
Partager