Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Devemos incluir coluna de classificação, chave primária no índice composto (MySQL)


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:
  1. 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.
  2. A ordem das colunas na definição da tabela e a ordem no índice são coisas separadas, então tudo bem
  3. 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.