Niedawno natknąłem się na ten sam problem:MySQL zaczął się dusić (utknął w stanie „statystyki”) zapytaniami z wieloma połączonymi tabelami. Znalazłem dobry post na blogu wyjaśniając, dlaczego tak się dzieje i jak to rozwiązać.
Zasadniczo przynajmniej w MySQL 5.5, domyślna wartość parametru konfiguracyjnego optimizer_search_depth wynosi 62, co spowoduje, że optymalizator zapytań zajmie wykładniczo więcej czasu wraz ze wzrostem liczby tabel w zapytaniu. Po pewnym czasie zakończenie zapytania zacznie trwać kilka dni lub nawet dłużej.
Jeśli jednak ustawisz optimizer_search_depth do 0 w swoim my.cnf , MySQL automatycznie wybiera odpowiednią głębokość, ale ogranicza ją do 7, co nie jest jeszcze zbyt skomplikowane.
Najwyraźniej ten problem został naprawiony w MySQL 5.6, ale sam go jeszcze nie testowałem.