Ir ao conteúdo
  • Cadastre-se

Qual dessas consultas é mais rápida e deixa o código mais leve?


Posts recomendados

Olá pessoal,


 


Estou trabalhando em um código que as vezes gera muita consulta ao banco de dados (Mysql). Então surgiu uma dúvida, o que é mais rápido e melhor para o código?


 


1. Fazer uma consulta no banco, pegando todos os valores que preciso, colocar esses valores em um array e depois mostrar os valores chamando esse array


 


2. Toda vez que precisar de um valor específico, buscar direto no banco de dados


 


Vou tentar explicar um pouco mais


 


 


Aluno    ****     Nota    ****   Falta


 


José     *****     50     ****       3


Maria   *****     50      ****       4 


Robert  ****     35      *****     1


Marta    ****     45      ****      0


 


Vamos lá então


 


A tabela nota é uma e a tabela faltas é outra


 


Nesse caso o que é melhor?


1. uma unica consulta usando join e todas as tabelas, depois colocar me um array e mostrar os valores


1. consulto tabela aluno e coloco em um array. Consulto tabela nota e coloco em um array usando o codigo do aluno como indice. consulto tabela notas e coloco em um array também usando o código do aluno como índice. Depois mostro os alunos e atraves do codigo do aluno mostro o array nota e o array faltas. 


2. uma consulta na tabela alunos e depois, a cada linha uma consulta na tabela notas, usando o where pelo código do aluno e também uma consulta na tabela faltas, usando também where.


3. consultar aluno e nota com um join, e depois, a cada linha uma consulta na tabela faltas usando o where pelo código do aluno


Link para o comentário
Compartilhar em outros sites

  • Moderador

Não entendi muito bem essa fixação por arrays...

Na verdade o desempenho no mysql  não muda muito de  uma consulta de 5 registros.. ou 5 milhões de registros.

 

Na minha opinião pessoal e que eu uso em muitos projetos é usar o INNER JOIN

 

explico.

 

Sua tabela alunos controlará a consulta.  Para isso na tabela  notas e faltas  você deve ter um campo ID_aluno  sendo uma chave estrangeira.

Nestas duas tabelas.. você cria um índice( index)  e atrela o campo.

Depois você faz um relacionamento de 1:N entre alunos e nota..  e alunos de falta.

 

Com relacionamento feito a consulta fica:

SELECT aluno.nome,        nota.nota,        falta.faltaFROM alunoINNER JOIN nota ON nota.ID_aluno = aluno.id_alunoINNER JOIN falta ON falta.ID_aluno = aluno.id_aluno

Se quiser ser mais específico e trazer as notas de um aluno...  você acrescenta o WHERE a baixo do inner join...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...