Comment est INDEX sur la clé primaire composite dans mysql?

12

Lors de la création d'une clé primaire composite pour deux colonnes ou plus, par exemple PRIMARY KEY(col1, col2, col3); le système INDEXchaque colonne individuellement?

La raison pour laquelle je pose cette question est que lorsque nous l'utilisons UNIQUE INDEX (col1, col2, col3), elle agit comme INDEXpour la première colonne uniquement, et nous devons créer des INDEXs supplémentaires pour les autres colonnes. Je veux savoir si c'est aussi le cas pour la clé primaire composite.

Googlebot
la source

Réponses:

16
  1. L'indice primaire composite garantira toujours que la combinaison des valeurs col1, col2 et col3 est unique. Si le but de l'index est de garantir que les valeurs sont uniques, vous aurez atteint ce

  2. Un index composite fournit également des correspondances d'index sur toute combinaison des colonnes col1, col2 et col3

  3. Vous créeriez des index distincts sur col2 et col3, si vous joignez ou filtrez en utilisant l'une des colonnes sans les autres.

  4. Je préfère toujours une clé primaire numérique (sans association commerciale) et des index uniques sur une clé primaire composite si nécessaire.

Stephen Senkomago Musoke
la source
1
bons points! alors, la clé primaire composite est similaire à UNIQUE INDEX, et nous n'avons pas d'index pour les 2e, 3e, ... colonnes pour récupérer rapidement une ligne?
Googlebot
1
@ssmusoke Puis-je présumer de l'omission du col1point 3 que a SELECT * WHERE col1 = 10serait efficace?
Andy
2
@Andy # 3 s'ajoute à un indice composite de col1, col2 et col3, de sorte que l'indice composite sera utilisé. Cependant, si vous filtrez col2 et col3 sans col1, vous avez besoin d'index séparés pour chacun d'eux uniquement
Stephen Senkomago Musoke
3
Avoir un index sur col1, col2 et col3 signifie que SELECT * FROM col1 = 10 sera efficace, car col1 est la première colonne de l'index, donc # 3 vous permet de faire la même chose pour col2 et col3, de sorte que si vous filtrer par ces colonnes seules sans col1 puis les colonnes sont également indexées
Stephen Senkomago Musoke
2
@PaulWasilewski oui en effet il y a des cas spéciaux où une clé primaire composite a du sens, mais ce ne sont que des cas spéciaux.
Stephen Senkomago Musoke