Domanda

Vorrei sapere quale sarà il migliore. Sto avendo un tavolo dire A dover col1 (è un fk1 chiave esterna), col2 (è anche un keyfk2 straniera). Posso usare PK come (col1, col2) o di un PK appena generato. Le query avranno fk1 nei criteri e FK2 in join. Gentilmente mi suggeriscono una migliore.

P.S Sto usando mysql

È stato utile?

Soluzione

Se questa è una relazione molti-a-molti tabella di collegamento, basta usare (col1, col2) come PK.

Le chiavi esterne in MySQL implicano InnoDB che è indice organizzato, questo significa che la tabella stessa sarà la PRIMARY KEY ed è record saranno ordinati.

Se si sta anche andando a cercare col2 e utilizzare col1 in join, è necessario creare un indice secondario supplementare su (col2). Questo indice sarà implicitamente include i valori PRIMARY KEY come i puntatori di record, e, di conseguenza, sarà infatti e indice su (col2, col1, col2).

Altri suggerimenti

Come altri hanno detto - se si tratta di una tabella di collegamento, l'uso col1, col2 come PK. Se d'altra parte questo tavolo può anche essere collegato a, quindi creare una nuova chiave di sua iniziativa. Si può anche mettere un vincolo unico sul col1, col2 coppia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top