sql >> Base de Datos >  >> RDS >> Mysql

Problema de Percona 5.6 InnoDB que no usa los índices correctamente

Esto suena como:Error n.º 70617 Las estadísticas persistentes predeterminadas pueden causar tiempos de consulta prolongados inesperados

Por lo que vale, este no es un error de Percona, también está presente en la edición comunitaria de MySQL 5.6.

Hay tres soluciones posibles:

  1. Utilice STRAIGHT_JOIN para indicar al optimizador que no reordene las referencias de tablas.

    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
    

    He reescrito tu JOIN para usar la sintaxis SQL-92, que recomiendo.

  2. Deshabilite las nuevas estadísticas persistentes de InnoDB característica, volviendo al comportamiento anterior a 5.6.

    En su archivo my.cnf:

    innodb_stats_persistent=0
    
  3. Actualice las estadísticas del optimizador de InnoDB manualmente después de realizar un cambio significativo en los datos (por ejemplo, después de cargar un mysqldump):

    ANALYZE TABLE items;
    ANALYZE TABLE formats;
    

PD:Trabajo en Percona y este error lo descubrió mi colega Justin Swanhart .