Nie zbliżasz się do limitu JOIN dla MySQL. Twoja liczba sprzężeń nie jest zła. Jednak dołączanie do tabeli pochodnej (podkwerendy wewnętrznej) w trakcie wykonywania może powodować problemy z wydajnością, ponieważ tabele pochodne nie mają indeksów. Wykonywanie sprzężenia na tabeli pochodnej bez indeksów może być powolne.
Powinieneś rozważyć stworzenie prawdziwej tabeli tymczasowej z indeksami do łączenia lub znaleźć sposób na uniknięcie podzapytania.
JOIN w MySQL jest w zasadzie jak wyszukiwanie (szukanie) dla każdego połączonego wiersza. Tak więc MySQL będzie musiał wykonać wiele wyszukiwań, jeśli dołączasz do wielu rekordów. Mniej chodzi o liczbę dołączonych stołów, a raczej o liczbę dołączanych wierszy, co może stanowić problem.
W każdym razie MySQL wykona tylko tyle wyszukiwań, zanim się podda i po prostu przeczyta całą tabelę. Całkiem dobrze radzi sobie z decydowaniem, który będzie tańszy.
Być może najlepszą rzeczą, jaką możesz zrobić, to pomóc mu zgadywać, aktualizując statystyki indeksu za pomocą ANALYZE TABLE.
Możesz mieć jedną klauzulę WHERE na SELECT. Tak więc Twoje wewnętrzne podzapytanie będzie miało klauzulę WHERE, a zapytanie zewnętrzne będzie miało klauzulę WHERE, które zostaną zastosowane po JOIN (przynajmniej logicznie, chociaż MySQL zazwyczaj zastosuje je najpierw w celu zapewnienia wydajności).
Wszystko to przy założeniu, że wiesz, jak prawidłowo używać indeksów.