Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, gostaria de saber a opinião de vocês sobre qual a forma melhor e mais correta de se fazer uma consulta envolvendo 3 tabelas, por exemplo, vamos supor que eu tenha a tabela alunos composta pelos campos id_aluno(pk), nome, idade, a tabela cursos composta pelos campos id_curso(pk), nome_curso e a tabela matriculas, composta pelos campos id_aluno(fk), id_curso(fk).
Supondo que eu tenha de fazer a seguinte consulta, todos os alunos com idade entre 18 e 25 anos que fizeram o curso Y, qual seria a melhor forma de fazer isto:
A) Fazer um inner join entre as tabelas aluno, matriculas, alunos e em cima disto fazer a consulta;
B) Selecionar o id e nome dos alunos com idade entre 18 e 25 anos na tabela alunas, selecionar o id e o nome do curso Y, guardar estas informações em vetores na minha programação e então com bases nesses valores que estão nos vetores fazer uma consulta na tabela matriculas checando onde o id destes alunos com idade entre 18 e 25 anos é igual ao id do curso Y.
Não sendo uma base ENEM (zilhões de registros) resolvo no BD.
A três horas do fim do prazo, Enem já tem 9,1 milhões de inscritos
Em bases deste tamanho alguns cuidados são precisos, trabalhar com arrays etc,
Em bases comuns, complicação desnecessária em minha mui modesta opinião.
Foram 9.519.827 inscritos.
Além do tamanho do banco, é preciso entender quantas vezes a consulta vai ser feita e qual a arquitetura do servidor.
Se forem muitos registros e os clientes acessarem o banco pela Internet, por exemplo, é inviável retornar todos os dados do banco pra processamento do lado deles.
Se essa consulta realmente for um gargalo pra você, cirar índices específicos pra ela pode resolver o problema.
Geralmente eu faço no banco de dados tudo o que posso, o que eu não conseguir, passo pro código.
Neste caso, eu faria a consulta, com INNER JOIN, afinal o banco de dados já irá retornar tudo o que é necessário...