Qui n’a pas été surpris d’apprendre le fonctionnement des index de Sql Server ?
Pour rappel, Sql Server et Sybase ont un tronc commun, le code qui a servi à développer Sql Server, produit de Sybase et de Microsoft.
Actuellement, et ce jusque la version 12 de Sybase ( et toujours le cas avec Sql Server 2014 ), les index fonctionnent ainsi :
- Un index dit cluster pour la clef primaire, qui implique un tri physique des ligne dans l’ordre de cette clef primaire
- Des index non cluster, ou index secondaires, pour les autres index
Or, dans le cas fréquent d’un index cluster et d’index non cluster, l’index non cluster ( les autres colonnes dont on souhaite augmenter la performance d’accès ), ne fait par référence à la page de la ligne ou à la clef primaire de la ligne, mais stocke une copie de la ligne ! Ceci est vrai pour ces deux produits, jusque Sybase ASE 15 !
En effet, Oracle, MySql, Postgresql, ont des systèmes d’indexation ou la feuille fait référence d’une manière ou d’une autre ( selon l’implémentation ) à la ligne d’origine.
A partir de ASE15, l’index non cluster ( ce terme est toujours employé ) fait donc maintenant référence à l’index cluster.
Cela change complètement votre manière de penser vos plans d’indexation 😉