La risposta dipende dal motore che utilizzi:
- MyISAM:aggiungere l'id all'indice può e probabilmente aiuterà
- InnoDB - La chiave primaria fa già parte di ogni indice secondario, perché innodb memorizza le righe in BTREE ordinate per chiave primaria e l'indice deve puntare alla riga effettiva - in tal caso l'aggiunta è ridondante se è l'ultima nell'indice ( ma così facendo non lo aggiungerai due volte, quindi non dovrebbe peggiorare le cose). In alcuni casi potresti volerlo aggiungere come non ultimo, o hai più colonne primarie e aggiungi alcune colonne al tuo indice in un ordine diverso - non dovrebbero esserci problemi con esso, innodb aggiungerà le colonne rimanenti del primario a quell'indice, ma può utilizzare quelli aggiunti in precedenza senza duplicarli)
Quindi risponde:
- In InnoDB non è necessario, in MyISAM è utile nel caso in cui utilizzi effettivamente quell'ordinamento, se non lo usi, aggiungerlo rende solo quell'indice più grande.
- L'ordine delle colonne nella definizione della tabella e l'ordine nell'indice sono cose separate, quindi va bene
- Sì, quell'indice sembra davvero buono, ma puoi controllarti usando SPIEGARE , esiste la possibilità di prestazioni ancora migliori - "indice di copertura ", ma ciò ha un costo, quindi, a meno che la query non sia critica e con prestazioni insufficienti, è probabilmente eccessiva.