Hallan Vieira Rocha 0 Denunciar post Postado Maio 8, 2018 Estou iniciando no ramo de sql, montei uma query no sql developer porém quando vou realizar uma conta na query esta demorando em torno de 1 minuto e 39 segundos para apresentar o resultado,a conta seria (somatória da coluna MIN e após divido pela quantidade de atendimento, onde nesse exemplo são apenas 200 linhas), segue a query para exemplificar. SELECT SUM (min)/ COUNT (CD_ATENDIMENTO),STATUS,MES, ANO FROM ( select M.*, (case WHEN M.min <= 24.99 THEN 'menor que 25 minutos' WHEN M.min >= 25 THEN 'maior que 25 minutos' END)STATUS from ( select d.cd_atendimento, d.cd_paciente SAME, to_char (d.dt_atendimento, 'dd/mm/yyyy') data_atendimento, to_char (d.hr_atendimento, 'hh24:mi') hora_atendimento, 1 qtd, pref.nm_cor, doc_fa.nm_usuario USUARIO_FICHA, -- DOC_FICHAnm_usuario USUARIO_FICHA, doc.nm_usuario medico_alta_int, round ((((doc.dh_criacao - doc_fa.dh_criacao)*24) * 60),2) as min, doc_fa.dh_criacao ficha_atendimento, doc.dh_criacao alta_inter, to_char (doc_fa.dh_criacao ,'hh24')*60 + to_char (doc_fa.dh_criacao, 'mi')MIN_CRIACAO_FICHA, to_char (doc.dh_criacao ,'hh24')*60 + to_char (doc.dh_criacao, 'mi')As MIN_CRIA_ALTA_INTER, to_char (dt_atendimento, 'mm')MES, to_char (dt_atendimento, 'rrrr')ANO, TO_CHAR (dt_atendimento, 'dd')DIA from dbamv.atendime d, dbamv.triagem_atendimento corate, dbamv.sacr_cor_referencia pref, ( select c3.cd_atendimento,c3.cd_documento_clinico , usu.nm_usuario,c3.dh_criacao from (select max(c2.cd_documento_clinico) cd_documento_clinico, c2.cd_atendimento from dbamv.pw_documento_clinico c2, dbamv.pw_editor_clinico b2 where c2.cd_documento_clinico = b2.cd_documento_clinico and (b2.cd_documento = 5 or b2.cd_documento = 36) -- inter_alta and c2.tp_status = 'FECHADO' group by c2.cd_atendimento) inter_alta, dbamv.pw_documento_clinico c3 ,dbasgu.usuarios usu where inter_alta.cd_documento_clinico = c3.cd_documento_clinico and c3.cd_usuario = usu.cd_usuario) doc, ( select c3.cd_atendimento,c3.cd_documento_clinico , usu.nm_usuario,c3.dh_criacao from (select max(c2.cd_documento_clinico) cd_documento_clinico, c2.cd_atendimento from dbamv.pw_documento_clinico c2, dbamv.pw_editor_clinico b2 where c2.cd_documento_clinico = b2.cd_documento_clinico and b2.cd_documento = 4-- ficha de atendimento and c2.tp_status = 'FECHADO' group by c2.cd_atendimento) inter_alta, dbamv.pw_documento_clinico c3 ,dbasgu.usuarios usu where inter_alta.cd_documento_clinico = c3.cd_documento_clinico and c3.cd_usuario = usu.cd_usuario) doc_fa where d.cd_atendimento = doc.cd_atendimento and d.cd_atendimento = doc_fa.cd_atendimento and d.cd_atendimento = corate.cd_atendimento and corate.cd_cor_referencia = pref.cd_cor_referencia and d.tp_atendimento = 'U' -- and c.cd_atendimento = 993169 AND to_date(to_char(dt_atendimento, 'dd/mm/rrrr')) BETWEEN '07/05/2018' AND '07/05/2018' )M )ATENDIMENT_MEDICO GROUP BY STATUS, MES, ANO Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Maio 8, 2018 Sem conhecer bem o modelo fica difícil. Mas , comece por : Eliminar se possível os subselects de coluna. Verifique se as tabelas tem índices. Faça o plano de execução da SQL. Veja se o BD tem as estatísticas atualizadas. Compartilhar este post Link para o post Compartilhar em outros sites