Bom, depois de ler muita coisa e fazer alguns testes cheguei aqui. Link para visualizar a imagem melhor Populei a tabela resposta_questao com 60 mil registros. De acordo com a imagem, coloquei o id_banca diretamente na tabela resposta_questao. Select antes da alteração: SELECT bancas.id_banca AS idBanca, bancas.nome AS nomeBanca FROM bancas INNER JOIN concursos AS concursos ON concursos.id_banca = bancas.id_banca INNER JOIN provas AS provas ON provas.id_concurso = concursos.id_concurso INNER JOIN provas_questoes AS provas_questoes ON provas_questoes.id_prova = provas.id_prova INNER JOIN questoes ON questoes.id_questao = provas_questoes.id_questao INNER JOIN resposta_questao AS resposta_questao ON resposta_questao.id_questao = questoes.id_questao WHERE resposta_questao.id_usuario = 576 GROUP BY bancas.nome ORDER BY bancas.nome; Select depois da alteração: SELECT bancas.id_banca AS idBanca, bancas.nome AS nomeBanca FROM bancas, resposta_questao WHERE resposta_questao.id_banca = bancas.id_banca AND resposta_questao.id_usuario = 576 GROUP BY bancas.nome ORDER BY bancas.nome; No primeiro select o mysql nem consegue executar, já no segundo demorou 1 segundo. Até ai parece estar tudo certo. Mas como farei com os casos abaixo, onde preciso evitar os Joins e consultar nas tabelas disciplina e assunto?? SELECT disciplinas.id_disciplina AS idDisciplina, disciplinas.nome AS nomeDisciplina FROM bancas INNER JOIN concursos AS concursos ON concursos.id_banca = bancas.id_banca INNER JOIN provas AS provas ON provas.id_concurso = concursos.id_concurso INNER JOIN provas_questoes AS provas_questoes ON provas_questoes.id_prova = provas.id_prova INNER JOIN questoes ON questoes.id_questao = provas_questoes.id_questao INNER JOIN resposta_questao AS resposta_questao ON resposta_questao.id_questao = questoes.id_questao INNER JOIN questoes_disciplina AS questoes_disciplina ON resposta_questao.id_questao = questoes_disciplina.id_questao INNER JOIN disciplinas ON disciplinas.id_disciplina = questoes_disciplina.id_disciplina WHERE bancas.id_banca = 58 AND resposta_questao.id_usuario = 576 GROUP BY disciplinas.nome ORDER BY disciplinas.nome; SELECT assuntos.id_assunto AS idAssunto, assuntos.id_diciplina AS idDisciplina, assuntos.nome AS nomeAssunto FROM bancas INNER JOIN concursos AS concursos ON concursos.id_banca = bancas.id_banca INNER JOIN provas AS provas ON provas.id_concurso = concursos.id_concurso INNER JOIN provas_questoes AS provas_questoes ON provas_questoes.id_prova = provas.id_prova INNER JOIN questoes ON questoes.id_questao = provas_questoes.id_questao INNER JOIN resposta_questao AS resposta_questao ON resposta_questao.id_questao = questoes.id_questao INNER JOIN questoes_assuntos AS questoes_assuntos ON resposta_questao.id_questao = questoes_assuntos.id_questao INNER JOIN assuntos ON assuntos.id_assunto = questoes_assuntos.id_assunto WHERE bancas.id_banca = 58 AND resposta_questao.id_usuario = 576 AND assuntos.id_diciplina = 6 GROUP BY assuntos.nome ORDER BY assuntos.nome;