Mysql
 sql >> Base de données >  >> RDS >> Mysql

index primaires vs index secondaires :différences de performances

Une table clusterisée est un B-Tree sans partie "heap" - les lignes sont stockées directement dans la structure B-Tree de l'index de clustering (clé primaire). Les nœuds du B-Tree peuvent être divisés ou fusionnés, de sorte que l'emplacement physique ou les lignes peuvent changer, nous ne pouvons donc pas avoir un simple "pointeur" d'un index secondaire vers les lignes, donc l'index secondaire doit inclure une copie complète de les champs d'index primaires pour pouvoir identifier de manière fiable les lignes.

Ceci est vrai pour Oracle, MS SQL Server et également vrai pour InnoDB .

Ce qui signifie que les index secondaires dans les tables en cluster sont "plus gros" que les index secondaires dans les tables basées sur le tas, ce qui :

Permettez-moi de citer Utilisez l'index, Luke ! :"Les avantages des tables organisées en index et des index clusterisés sont principalement limités aux tables qui n'ont pas besoin d'un second index."

Ce qui est dommage, car MySQL ne vous permet pas de choisir le clustering indépendamment du moteur de stockage.