Come si trova INDEX sulla chiave primaria composita in mysql?


12

Quando si crea una chiave primaria composita per due o più colonne, ad esempio PRIMARY KEY(col1, col2, col3); il sistema INDEXciascuna colonna individualmente?

Il motivo per cui sto ponendo questa domanda è che quando usiamo UNIQUE INDEX (col1, col2, col3), si comporta solo come INDEXper la prima colonna e dobbiamo creare ulteriori INDEXs per altre colonne. Voglio sapere se è il caso anche della chiave primaria composita.

Risposte:


16
  1. L'indice primario composito assicurerà sempre che la combinazione dei valori col1, col2, col3 sia unica. Se lo scopo dell'indice è garantire che i valori siano univoci, lo avrai raggiunto

  2. Un indice composito fornisce anche corrispondenze di indice su qualsiasi combinazione delle colonne col1, col2 e col3

  3. Dovresti creare indici separati su col2 e col3, se ti unisci o filtri utilizzando una delle colonne senza le altre.

  4. Preferisco sempre una chiave primaria numerica (senza associazione di imprese) e, se necessario, indici univoci su una chiave primaria composita.


1
punti buoni! quindi, la chiave primaria composita è simile a UNIQUE INDEX e non abbiamo un indice per le colonne 2nd, 3rd, ... per recuperare rapidamente una riga?
— Googlebot

1
@ssmusoke Posso dedurre dall'omissione di cui col1al punto 3 che a SELECT * WHERE col1 = 10sarebbe efficace?
— Andy,

2
@Andy # 3 si aggiunge a un indice composito di col1, col2 e col3, pertanto verrà utilizzato l'indice composito. Tuttavia, se esegui filtri su col2 e col3 senza col1, hai bisogno di indici separati per ciascuno di essi da solo
— Stephen Senkomago Musoke,

3
Avere un indice su col1, col2 e col3 significa che SELECT * FROM col1 = 10 sarà efficiente, poiché col1 è la prima colonna dell'indice, quindi # 3 ti consente di fare lo stesso per col2 e col3, quindi se filtra solo per quelle colonne senza col1, quindi anche le colonne vengono indicizzate
— Stephen Senkomago Musoke,

2
@PaulWasilewski sì, in effetti ci sono casi speciali in cui una chiave primaria composita ha senso, ma questi sono solo casi speciali.
— Stephen Senkomago Musoke
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.