Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hallan Vieira Rocha

Performance query

Recommended Posts

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 
         


      
   
image.thumb.png.7d753df359a29de80facafe5fad74214.png

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.