J'ai quelques tables (Table A et Table B) avec une spécification BIGINT avec IDENTITY comme clé primaire. Dans ces tableaux, j'ai 2 colonnes VARBINARY (MAX). Les mises à jour et les suppressions sont très rares.PK Fragmentation d'index sur les colonnes IDENTITY avec colonne VARBINARY (MAX) dans le tableau
Ils ont presque le même nombre de lignes, le tableau B un peu moins mais ont plus de données significatives dans les colonnes VARBINARY (MAX). J'ai été surpris de voir que le stockage utilisé par PK dans le tableau B était beaucoup plus élevé que le stockage utilisé par PK dans le tableau A. Faire un peu de lecture, corrigez-moi si je me trompe, sur le sujet clarifié c'est a quelque chose à faire avec la taille maximale de la ligne autour de 8k. Il y a donc une pagination avec une référence d'octet qui est ensuite incluse dans l'index. D'où le plus grand stockage utilisé par PK dans le tableau B. Il représente environ 30% de la taille totale de la base de données. Je pensais que seul le BIGINT faisait partie de l'index.
Ma question est de savoir s'il existe une solution de rechange pour cela? Des conceptions, des techniques ou des hacks qui peuvent empêcher cela?
salutations
Vilma
Je vois. Donc, l'hypothèse est que les données VARBINARY (MAX) dans ce cas sont intégrées dans l'index cluster PK. Est-ce que c'est redondant alors? Mening qu'il est stocké dans la colonne aussi? – Vilma
Ma spéculation était que dans certaines circonstances (quand le varbinary est assez court) il serait stocké avec l'index, oui; quand il devient assez long pour que cela soit impossible alors il est shunté à l'endroit où de grandes choses sont stockées et remplacées dans l'index avec un pointeur vers le stockage de grandes affaires. –