Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z Percona 5.6 InnoDB, który nie używa poprawnie indeksów

Brzmi to tak:Błąd nr 70617 Domyślne trwałe statystyki mogą powodować nieoczekiwanie długie czasy zapytań

Co jest warte, nie jest to błąd Percony, jest on również obecny w społecznościowej edycji MySQL 5.6.

Istnieją trzy możliwe obejścia:

  1. Użyj STRAIGHT_JOIN, aby dać wskazówkę optymalizatorowi, aby nie zmieniał kolejności odniesień do tabeli.

    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
    

    Przepisałem twoje JOIN, aby używało składni SQL-92, co polecam.

  2. Wyłącz nowe trwałe statystyki InnoDB funkcja, powrót do zachowania sprzed wersji 5.6.

    W twoim pliku my.cnf:

    innodb_stats_persistent=0
    
  3. Odśwież statystyki optymalizatora InnoDB ręcznie po dokonaniu znaczącej zmiany danych (na przykład po załadowaniu mysqldump):

    ANALYZE TABLE items;
    ANALYZE TABLE formats;
    

PS:Pracuję w firmie Percona i ten błąd został odkryty przez mojego kolegę Justina Swanharta .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje sposób, aby serwer MySQL „wypychał” aktualizacje bazy danych do programu klienckiego?

  2. Jak całkowicie usunąć MySQL z Ubuntu?

  3. Błąd analizy:błąd składni, nieoczekiwany (T_VARIABLE)

  4. Jak mogę wymusić wylogowanie wszystkich użytkowników ze strony internetowej?

  5. mysql auto_increment o 5?