sql >> Databasteknik >  >> RDS >> Mysql

Percona 5.6 InnoDB problem använder inte index korrekt

Det här låter som:Bug #70617 Standardbeständig statistik kan orsaka oväntade långa frågetider

För vad det är värt är detta inte en Percona-bugg, det finns också i MySQL 5.6 community-utgåva.

Det finns tre möjliga lösningar:

  1. Använd STRAIGHT_JOIN för att ge en ledtråd till optimeraren att inte ändra ordning på tabellreferenser.

    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
    

    Jag har skrivit om din JOIN för att använda SQL-92-syntax, vilket jag rekommenderar.

  2. Inaktivera den nya InnoDB persistent statistik funktion, återgår till beteendet före 5.6.

    I din my.cnf-fil:

    innodb_stats_persistent=0
    
  3. Uppdatera InnoDB-optimeringsstatistik manuellt efter att du har gjort en betydande ändring av data (till exempel efter att ha laddat en mysqldump):

    ANALYZE TABLE items;
    ANALYZE TABLE formats;
    

PS:Jag arbetar på Percona, och det här felet upptäcktes av min kollega Justin Swanhart .




  1. Hur skapar och frågar jag länkade databasservrar i SQL Server?

  2. Vad är det för fel med denna lagrade procedur?

  3. Att undervälja eller inte att undervälja?

  4. Access-kompatibel Wide World Importers SQL Server Database