La réponse dépend du moteur que vous utilisez :
- MyISAM - l'ajout d'un identifiant à l'index peut et sera probablement utile
- InnoDB - La clé primaire fait déjà partie de chaque index secondaire, car innodb stocke les lignes dans BTREE triées par clé primaire et l'index a besoin de primaire pour pointer vers la ligne réelle - dans ce cas, l'ajouter est redondant s'il est le dernier dans l'index ( mais cela ne l'ajoutera pas deux fois, donc cela ne devrait pas aggraver les choses). Dans certains cas, vous voudrez peut-être l'ajouter comme non-dernier, ou vous avez plusieurs colonnes primaires et vous ajoutez des colonnes à votre index dans un ordre différent - cela ne devrait pas poser de problème, innodb ajoutera les colonnes restantes de primaire à cet index, mais peut utiliser ceux ajoutés avant sans les dupliquer)
Alors répond :
- Dans InnoDB, c'est inutile, dans MyISAM, c'est bien si vous utilisez réellement ce tri, si vous ne l'utilisez pas, l'ajouter ne fait que rendre cet index plus grand.
- L'ordre des colonnes dans la définition de table et l'ordre dans l'index sont des choses distinctes, donc c'est OK
- Oui, cet index semble vraiment bon - mais vous pouvez vérifier vous-même en utilisant EXPLIQUER , il est possible d'obtenir des performances encore meilleures - "index de couverture ", mais cela a un coût, donc à moins que la requête ne soit critique et peu performante, elle est probablement exagérée.