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

Problema do Percona 5.6 InnoDB não usando índices corretamente


Isso soa como:Bug #70617 Estatísticas persistentes padrão podem causar longos tempos de consulta inesperados

Vale a pena, isso não é um bug do Percona, também está presente na edição da comunidade do MySQL 5.6.

Existem três soluções possíveis:

  1. Use STRAIGHT_JOIN para dar uma dica ao otimizador para não reordenar as referências de tabela.
    SELECT STRAIGHT_JOIN
      i.item_name, i.item_key, i.item_date, f.format_long
    FROM items i
    INNER JOIN formats f
      ON i.item_format = f.format_id
    WHERE i.item_private = 0 
    ORDER BY i.item_id DESC LIMIT 8
    

    Eu reescrevi seu JOIN para usar a sintaxe SQL-92, que eu recomendo.

  2. Desative as novas estatísticas persistentes do InnoDB recurso, revertendo para o comportamento pré-5.6.

    No seu arquivo my.cnf:
    innodb_stats_persistent=0
    

  3. Atualize as estatísticas do otimizador InnoDB manualmente depois de fazer uma alteração significativa nos dados (por exemplo, após carregar um mysqldump):
    ANALYZE TABLE items;
    ANALYZE TABLE formats;
    

PS:Eu trabalho na Percona e esse bug foi descoberto pelo meu colega Justin Swanhart .