Pessoal, tenho este select aqui na minha aplicação… Esta demorando um minuto e meio para trazer a resposta. Sei que quando fazemos Inner Joins com comparação de campos, ele verificar cada campo com todos da outra tabela. Acho que deve ser por isso a demora. Em média 1500 registros em cada tabela.
O que posso fazer para melhorar o desempenho? não entendo muito, mais penso que posso Indexar as tabelas… Mais nao sei fazer isso tbm…
alguem pode me ajudar por favor?
o código usado é este abaixo… Muito obrigado
SELECT
comp.UnidComp_UnidadeCompetente,
comp.UnidComp_IDRequisicao,
comp.UnidComp_Status,
exec.Exec_IDExecucao,
setex.DESCRICAO,
exec.Exec_Executador,
req.Rs_Unidade,
req.Rs_TipoServico,
req.Rs_Local,
req.Rs_Prioridade,
req.Rs_DataEmissao,
req.Rs_Status,
max(hist.Hist_Data) as dataultmov,
DATEDIFF(CURDATE(),max(hist.Hist_Data)) as dias
FROM
unidadecompetente comp
INNER JOIN requisicao req ON (comp.UnidComp_IDRequisicao = req.Rs_IDRequisicao)
INNER JOIN execucao exec ON (comp.UnidComp_IDUnidadeCompetente = exec.Exec_IDUnidadeCompetente)
INNER JOIN setorexecucao setex ON (exec.Exec_Setor = setex.IDSETEXECUCAO)
INNER JOIN historico hist ON (Hist_IDRequisicao = Rs_IDRequisicao)
WHERE
comp.UnidComp_UnidadeCompetente like ‘[glo_unidade]’ and Exec_Status = 1 and comp.UnidComp_Status = 0
GROUP BY exec.Exec_IDExecucao
ORDER BY dataultmov DESC