clé composite ou nouvelle clé unique
-
18-09-2019 - |
Question
Je veux savoir qui sera le meilleur. J'ai une table dire ayant un col1 (est une fk1 clé étrangère), col2 (est aussi un keyfk2 étranger). Puis-je utiliser PK comme (col1, col2) ou PK nouvellement généré. Les requêtes auront fk1 des critères et fk2 dans les jointures. Veuillez me suggérer une meilleure.
P.S J'utilise mysql
La solution
Si cela est un nombre à plusieurs table de lien, il suffit d'utiliser (col1, col2)
comme PK
.
Les clés étrangères dans MySQL
impliquent InnoDB
qui est organisée en index, cela signifie que la table elle-même sera le PRIMARY KEY
et ses dossiers seront classés.
Si vous aussi allez rechercher et utiliser col2
col1
dans les jointures, vous devez créer un index secondaire supplémentaire sur (col2)
. Cet indice inclut implicitement les valeurs PRIMARY KEY
comme les pointeurs d'enregistrement, et, par conséquent, sera en fait et l'indice sur (col2, col1, col2)
.
Autres conseils
Comme d'autres l'ont dit - si cela est une table de liaison, l'utilisation col1, col2 comme PK. Si d'autre part ce tableau peut également être lié à, puis créer une nouvelle clé de son propre. Vous pouvez également mettre une contrainte unique sur la col1, col2 paire.