La respuesta depende del motor que utilice:
- MyISAM - agregar id al índice puede y probablemente ayudará
- InnoDB:la clave principal ya forma parte de cada índice secundario, porque innodb almacena filas en BTREE ordenadas por clave principal y el índice necesita que la clave principal apunte a la fila real; en ese caso, agregarlo es redundante si es el último en el índice ( pero hacerlo no lo agregará dos veces, por lo que no debería empeorar las cosas). En algunos casos, es posible que desee agregarlo como no último, o tiene varias columnas primarias y agrega algunas columnas a su índice en un orden diferente; no debería haber ningún problema con eso, innodb agregará las columnas restantes de primaria a ese índice, pero puede usar los agregados antes sin duplicarlos)
Entonces responde:
- En InnoDB es innecesario, en MyISAM es bueno en caso de que realmente use esa clasificación, si no la usa, agregarla solo hace que el índice sea más grande.
- El orden de las columnas en la definición de la tabla y el orden en el índice son cosas separadas, así que está bien
- Sí, ese índice parece realmente bueno, pero puede verificarlo usando EXPLICAR , existe la posibilidad de un rendimiento aún mejor - "índice de cobertura ", pero eso tiene un costo, por lo que, a menos que la consulta sea crítica y de bajo rendimiento, probablemente sea una exageración.