Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta SQL - Otimização


Jedais

Pergunta

Boa tarde,

Gostaria de uma ajuda para otimizar a query abaixo. O resultado é de 9000 linhas em =~8/9 min. Obrigado.

SELECT DISTINCT (N.IDNOTA) AS ID_NOTA_FISCAL,
(N.CDNOTA) AS NO_NOTA_FISCAL,
(C.CDPARCEIROCOMERCIAL) AS COD_COMPANHIA,
(C.NMPARCEIROCOMERCIAL) AS NOME_COMPANHIA,
(T.CDTRANSPORTADORA) AS COD_TRANSP,
(T.DSAPELIDOTRANSPORTADORA) AS NOME_TRANSP,
CONVERT (VARCHAR,N.DTEMBARQUE,103) AS DATA_EMBARQUE,
(RR.DSREFERENCIA) AS ROMANEIO_TIPO_VIAGEM,
(EQ.CDEQUIPAMENTO) AS COD_EQUIPAMENTO,
(D.CDPARCEIROCOMERCIAL) AS COD_DESTINATARIO,
(D.NMPARCEIROCOMERCIAL) AS NOME_DESTINATARIO,
(CID.NMCIDADE) AS CID_DESTINO,
(UF.CDUF) AS UF_DESTINO,
(R.CDROMANEIO) AS ROMANEIO,
ROUND (SUM(I.VRNTAITEM),2)/ROUND(COUNT(DISTINCT I.IDITEM),2) AS VR_NOTA_FISCAL,
ROUND (SUM(LNP.VRFRETERATEIOPREVISTO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS VR_FR_PREVISTO,
ROUND (SUM(I.QTPESOBRUTO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS QT_PESO_BRUTO,
ROUND (SUM(I.QTVOLUME),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS QT_VOLUMES,
(RN.DSREFERENCIA) AS CANAL_VENDAS,
(E.DSEVENTO) AS EVENTO,
(N.DSLOTE) AS LOTE,
ROUND (SUM(LNP.VRFRETERATEIOCOBRADO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS VR_FR_COBRADO,
ROUND (SUM(LNP.VRAPAGARCOBRADO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS VR_FR_A_PAGAR_COBRADO,
(TN.CDTIPONOTA) AS COD_TIPO_NOTA,
(TN.DSTIPONOTA) AS DESC_TIPO_NOTA,
(UFR.DSUFREGIAO) AS REGIAO_UF,
CASE N.TPFRETE WHEN 1 THEN 'CIF' WHEN 2 THEN 'FOB' END AS TIPO_FRETE
FROM GKOSCF.FMNOTA AS N LEFT JOIN GKOSCF.FCTRANSP AS T ON N.IDTRANSPORTADORA = T.IDTRANSPORTADORA
LEFT JOIN GKOSCF.FCPARCOM AS C ON N.IDPAREMITENTE = C.IDPARCEIROCOMERCIAL
LEFT JOIN GKOSCF.FCPARCOM AS D ON N.IDPARDESTREMET = D.IDPARCEIROCOMERCIAL
LEFT JOIN GKOSCF.FRCONNTA AS RLN ON N.IDNOTA = RLN.IDNOTA
LEFT JOIN GKOSCF.FMCONHEC AS L ON RLN.IDCONHECIMENTO = L.IDCONHECIMENTO
LEFT JOIN GKOSCF.FCCIDADE AS CID ON L.IDCIDDESTINO = CID.IDCIDADE
LEFT JOIN GKOSCF.FCUF AS UF ON CID.IDUF = UF.IDUF
LEFT JOIN GKOSCF.FCEVENTO AS E ON L.IDEVENTOPRINCIPAL = E.IDEVENTO
LEFT JOIN GKOSCF.FRCONOCO AS RLO ON L.IDCONHECIMENTO = RLO.IDCONHECIMENTO
LEFT JOIN GKOSCF.FMOCORRE AS O ON RLO.IDOCORRENCIA = O.IDOCORRENCIA
LEFT JOIN GKOSCF.FCTPOOCO AS TPO ON TPO.IDTIPOOCORRENCIA = O.IDTIPOOCORRENCIA
LEFT JOIN GKOSCF.FMCONRAT AS LNP ON N.IDNOTA = LNP.IDNOTA
LEFT JOIN GKOSCF.FCUFREG AS UFR ON UF.IDUFREGIAO = UFR.IDUFREGIAO
LEFT JOIN GKOSCF.FMROMANE AS R ON N.IDROMANEIO = R.IDROMANEIO
LEFT JOIN GKOSCF.FCEQUIPA AS EQ ON R.IDEQUIPAMENTO = EQ.IDEQUIPAMENTO
LEFT JOIN GKOSCF.FMNTAITM AS I ON N.IDNOTA = I.IDNOTA
LEFT JOIN GKOSCF.FCTPNOTA AS TN ON N.IDTIPONOTA = TN.IDTIPONOTA
LEFT JOIN GKOSCF.FMREFER AS RN ON N.IDNOTA = RN.IDMOVIMENTO
LEFT JOIN GKOSCF.FMREFER AS RR ON R.IDROMANEIO = RR.IDMOVIMENTO
WHERE L.IDEVENTOPRINCIPAL = '1' AND
L.DTEMBARQUE BETWEEN '1/1/2015' AND '2/1/2015'
GROUP BY N.IDNOTA, N.CDNOTA, C.CDPARCEIROCOMERCIAL, C.NMPARCEIROCOMERCIAL, T.CDTRANSPORTADORA,
T.DSAPELIDOTRANSPORTADORA, N.DTEMBARQUE, RR.DSREFERENCIA, RN.DSREFERENCIA, EQ.CDEQUIPAMENTO,
D.CDPARCEIROCOMERCIAL, D.NMPARCEIROCOMERCIAL, CID.NMCIDADE, UF.CDUF, R.CDROMANEIO,
N.VRPESOBRUTO, N.QTVOLUME, E.DSEVENTO, N.DSLOTE, TN.CDTIPONOTA, TN.DSTIPONOTA, UFR.DSUFREGIAO, N.TPFRETE
ORDER BY N.CDNOTA ASC
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...