Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eriksonsr

Melhor maneira de fazer uma consulta envolvendo três ou mais tabelas

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sendo uma base ENEM (zilhões de registros) resolvo no BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.