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

Quand dois-je utiliser un index composite ?

Vous devez utiliser un index composite lorsque vous utilisez des requêtes qui en bénéficient. Un index composite qui ressemble à ceci :

index( column_A, column_B, column_C )

bénéficiera une requête qui utilise ces champs pour joindre, filtrer et parfois sélectionner. Cela profitera également aux requêtes qui utilisent les sous-ensembles de colonnes les plus à gauche dans ce composite. Ainsi, l'index ci-dessus satisfera également les requêtes nécessitant

index( column_A, column_B, column_C )
index( column_A, column_B )
index( column_A )

Mais cela n'aidera pas (du moins pas directement, peut-être que cela peut aider partiellement s'il n'y a pas de meilleurs indices) pour les requêtes qui en ont besoin

index( column_A, column_C )

Remarquez que la colonne_B est manquante.

Dans votre exemple d'origine, un index composite pour deux dimensions bénéficiera principalement aux requêtes qui interrogent les deux dimensions ou la dimension la plus à gauche en elle-même, mais pas la dimension la plus à droite en elle-même. Si vous interrogez toujours deux dimensions, un index composite est la solution, peu importe lequel est le premier (le plus probable).