A resposta depende do motor que você usa:
- MyISAM - adicionar id ao índice pode e provavelmente ajudará
- InnoDB - Chave Primária já faz parte de cada índice secundário, porque o innodb armazena linhas em BTREE classificadas por chave primária e o índice precisa de primário para apontar para a linha real - nesse caso, adicionar é redundante se for o último no índice ( mas isso não irá adicioná-lo duas vezes, então não deve piorar as coisas). Em alguns casos, você pode querer adicioná-lo como não-último, ou você tem várias colunas primárias e adiciona algumas colunas ao seu índice em ordem diferente - não deve haver nenhum problema com isso, o innodb anexará as colunas restantes do primário a esse índice, mas pode usar aqueles adicionados antes sem duplicá-los)
Então responde:
- No InnoDB é desnecessário, no MyISAM é bom caso você realmente use essa classificação, se você não a usa, adicioná-la apenas aumenta esse índice.
- A ordem das colunas na definição da tabela e a ordem no índice são coisas separadas, então tudo bem
- Sim, esse índice parece muito bom - mas você pode verificar usando EXPLICAR , existe a possibilidade de um desempenho ainda melhor - "índice de cobertura ", mas isso tem um custo, portanto, a menos que a consulta seja crítica e com baixo desempenho, provavelmente é um exagero.