Dit klinkt als:Bug #70617 Standaard persistente statistieken kunnen onverwacht lange querytijden veroorzaken
Voor wat het waard is, dit is geen Percona-bug, het is ook aanwezig in de MySQL 5.6 community-editie.
Er zijn drie mogelijke oplossingen:
-
Gebruik STRAIGHT_JOIN om een hint te geven aan de optimizer om tabelverwijzingen niet opnieuw te ordenen.
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
Ik heb je JOIN herschreven om de SQL-92-syntaxis te gebruiken, wat ik aanbeveel.
-
Schakel de nieuwe InnoDB persistent stats
functie, terugkerend naar pre-5.6-gedrag. In uw my.cnf-bestand:
innodb_stats_persistent=0
-
Ververs de statistieken van de InnoDB-optimalisatie handmatig nadat u een belangrijke wijziging in de gegevens hebt aangebracht (bijvoorbeeld na het laden van een mysqldump):
ANALYZE TABLE items; ANALYZE TABLE formats;
PS:ik werk bij Percona en deze bug is ontdekt door mijn collega Justin Swanhart .