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

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

Aceitar