Нямате близо до границата на JOIN за MySQL. Вашият брой присъединявания не е лош. Въпреки това, присъединяването към производна таблица (вашата вътрешна подзаявка), както правите, може да причини проблеми с производителността, тъй като производните таблици нямат индекси. Извършването на свързване на извлечена таблица без индекси може да бъде бавно.
Трябва да помислите за създаването на истинска временна таблица с индекси за присъединяване или да измислите начин да избегнете подзаявката.
ПРИСЪЕДИНЯВАНЕТО в MySQL по същество е като извършване на търсене (търсене) за всеки присъединен ред. Така че MySQL ще трябва да извърши много търсения, ако се присъединявате към много записи. Това може да бъде проблем по-малко за това колко таблици се присъединявате, отколкото броя на редовете, към които се присъединявате.
Както и да е, MySQL ще извърши само толкова много търсения, преди да се откаже и просто да прочете цялата таблица. Той върши доста добра работа при вземането на решение кое ще бъде по-евтино.
Може би най-доброто нещо, което можете да направите, е да му помогнете да познае, като актуализирате статистиката на индекса с ANALYZE TABLE.
Можете да имате една клауза WHERE на SELECT. Така че вашата вътрешна подзаявка ще има клауза WHERE и външната ви заявка ще има клауза WHERE и те се прилагат след JOIN (поне логично, въпреки че MySQL обикновено ги прилага първо за производителност).
Освен това, всичко това предполага, че знаете как правилно да използвате индекси.