Mysql
 sql >> Database >  >> RDS >> Mysql

Quando dovrei usare un indice composito?

È necessario utilizzare un indice composito quando si utilizzano query che ne traggono vantaggio. Un indice composito simile a questo:

index( column_A, column_B, column_C )

andrà a vantaggio di una query che utilizza quei campi per l'unione, il filtraggio e talvolta la selezione. Andrà anche a vantaggio delle query che utilizzano i sottoinsiemi di colonne più a sinistra in quel composto. Quindi l'indice sopra soddisferà anche le query che richiedono

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

Ma non aiuterà (almeno non direttamente, forse può aiutare in parte se non ci sono indici migliori) per le query che necessitano

index( column_A, column_C )

Nota come manca la colonna_B.

Nell'esempio originale, un indice composto per due dimensioni andrà a vantaggio principalmente delle query che eseguono query su entrambe le dimensioni o sulla dimensione più a sinistra da sola, ma non sulla dimensione più a destra da sola. Se esegui sempre query su due dimensioni, un indice composito è la strada da percorrere, non importa quale sia la prima (molto probabilmente).