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

Indexação para paginação de conjunto de chaves no mysql


Eu encontrei esse problema antes. Aqui está a minha análise dele.

  • Ocorre no MySQL 5.7 e 8.0, mas aparentemente não nas versões mais antigas e não no MariaDB.

  • A "solução" que prefiro é mudar os índices assim:
       INDEX(company_id)      -- DROP this
       INDEX(company_id, id)  -- ADD this
    

Embora o índice de 2 colunas seja teoricamente idêntico ao índice de uma coluna para InnoDB (assumindo id é o PK`), o Optimizer parece ignorar este fato em algumas situações .

Além disso, gosto de adicionar explicitamente o PK quando vejo uma necessidade . Isso sinaliza aos futuros leitores do esquema (inclusive eu) que algumas consultas se beneficiam do PK que está sendo anexado.

Ainda não encontrei um caso em que "intersecção de mesclagem de índice" seja mais rápido que um índice composto equivalente.

Eu não gosto de usar "dicas" de índice por medo de que a distribuição de dados mude no futuro e minha "dica" piore as coisas.