Jedais Postado Fevereiro 11, 2015 Denunciar Share Postado Fevereiro 11, 2015 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Jedais
Boa tarde,
Gostaria de uma ajuda para otimizar a query abaixo. O resultado é de 9000 linhas em =~8/9 min. Obrigado.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.