Como deixar essa Query mais ágil?

08/03/2020

0

E aí pessoal, blza?!

Estou tendo problema de lentidão (e muita) com a query MySQL abaixo. Estou programando em PHP. Não sei o que está acontecendo e resolvi compartilhar aqui com vocês para saber como resolver.

Trata-se de um sistema de alimentação de frequência escolar. A Query lista todos os alunos cadastrados em uma turma de um curso específico, no qual só são exibidos os alunos que estão com o seu contrato dentro da vigência. Há consultas de checagem dos dados entre 5 tabelas.


SELECT 

a.alu_id, a.alu_nome,
mt.freq_id_aluno, mt.freq_id_curso, mt.freq_id_turma, mt.freq_id_empresa,   
da.da_data_aula,  
c.curso_tipo_turma,  
ca.ctt_alu_dt_ini, ca.ctt_alu_dt_fim


FROM montar_turma mt, data_aula da, contrato_aluno ca, alunos a, curso c

WHERE 

mt.freq_id_aluno = a.alu_id AND   
mt.freq_id_curso = idCurso AND   
mt.freq_id_turma = idTurma AND   
da.da_data_aula = dataAula AND   
c.curso_tipo_turma = tipoTurma AND  
dataAula BETWEEN ca.ctt_alu_dt_ini AND ca.ctt_alu_dt_fim AND  

mt.freq_id_aluno NOT IN (SELECT freq_id_aluno FROM frequencia_master WHERE freq_data_aula = dataAula AND freq_id_data_aula = idDA AND freq_id_curso = idCurso AND freq_id_turma = idTurma)

GROUP BY mt.freq_id_aluno

ORDER BY a.alu_nome ASC



Agradeço desde já!
Myller Meireles

Myller Meireles

Responder

Post mais votado

08/03/2020

Olá, caso você chegou aqui com a intenção de me ajudar! À você, o meu muito obrigado!

Depois de analisar melhor e testar meu código, constatei que o problema da lentidão estava nas linhas 6 e 18 da query. O campo é do tipo string (não sei se isso tem a ver com o problema), e quando tirei da query funcionou muito rápido, como deveria ser.

Obrigado!

Myller Meireles

Myller Meireles
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar