Quando um processo no MySQL utiliza JOIN com várias tabelas e o mesmo começa a ficar lento - apesar de estar usando as devidas chaves e no explain aparecer algo como Using where; Using join buffer (Block Nested Loop), uma alternativa é desabilitar o parâmetro block_nested_loop na sessão.
Sintaxe:
SET SESSION optimizer_switch='block_nested_loop=off';