Un indice è una struttura dati separata e ordinata (un B-tree in InnoDB) che permette a MySQL di trovare le righe senza scandire l'intera tabella. Senza di esso, una ricerca legge ogni riga (un full table scan); con esso, percorre un albero in pochi passi.
Primary vs secondaria
In InnoDB la tabella stessa è l'indice della primary key — un clustered index. Le righe sono memorizzate fisicamente in ordine di primary key, quindi la ricerca per primary key arriva direttamente sulla riga completa.
