Ir para conteúdo

POWERED BY:

Arquivado

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

pedrovisk

Otimização de Consulta

Recommended Posts

Boa tarde Galera!

 

Desenvolvi esta consulta e gostaria da opinião dos mais experientes para melhorar o desempenho das mesma. Caso precise de acesso ao banco, poderei disponibilizar a base de homologação.

SELECT  IsNull(Case When STO.NM_SET Is Null Then RST.CD_CUS_CLI Else STO.NM_SET End, '') As NM_SET, 
IsNull(STO.IS_SET, 0) As IS_SET, FORN.IS_FOR, FORN.NM_FOR_RED As Fornecedor, MST.NM_MST_PAX As Passageiro, 
Convert(char(10),RST.CD_RST,103) As Reserva, Convert(char(10),RST.DT_RST_EMI,103) As Emissao,  
Cast(MST.VL_MST_TAR As Decimal(15,2)) As Vl_Original, MST.NM_MST_MOE As Moeda, MST.VL_MST_CAM As Cambio, 
MST.NR_MST_BIL, MST.NR_MST_OPV,  MST.NR_MST_VIA AS Solicitacao, Convert(char(10),TRE.DT_TRE_SAI,103) As Saida,  
Convert(char(10),MST.DT_MST_ENT,103) As Dt_Entrada, Convert(char(10),MST.DT_MST_SAI,103) As Dt_Saida,  
Cast(IsNull(MST.VL_MST_TAR, 0) * IsNull(MST.VL_MST_CAM, 0) As Decimal(15,2)) As Valor, TRE.NM_TRE As Rota, 
SER.NM_SER_CLA As Produto, MST.NM_MST_CP2 As Complemento, Cast(IsNull(MST.VL_MST_TAX_FAT, 0) As Decimal(15,2)) As Taxas, 
Cast(IsNull(MST.VL_MST_FEE, 0) As Decimal(15,2)) As Taxa_Servico, Cast(IsNull(MST.VL_MST_DES, 0) As Decimal(15,2)) As Desconto,
Cast(Case When RST.CD_RST_FPG <> 6 Then
-- CASO TENHA DESCONTO, EXIBIR.
IsNull(MST.VL_MST_TAR, 0) * IsNull(MST.VL_MST_CAM, 0) + IsNull(MST.VL_MST_FEE, 0) + IsNull(MST.VL_MST_TAX_FAT, 0) + IsNull(MST.VL_MST_TDU, 0) - IsNull(MST.VL_MST_DES, 0)


Else IsNull(MST.VL_MST_TEX, 0) End As Decimal(15,2)) As Total, 
isnull(MST.DS_MST_OB1, '') +  ' ' + isnull(MST.DS_MST_OB2, '') As Observacao, 
IsNull(MST.VL_MST_TDU, 0) As Taxas_Repasse, RST.NR_RST_RES As Integracao, 
CLI.TP_CLI_DED_ISS, CLI.TP_CLI_INC_ISS_TDU, CLI.TP_CLI_INC_ISS_TSE, 


(SELECT T02.TX_IEM FROM T_IMP T01, T_IEM T02 WHERE T01.IS_IMP = T02.IS_IMP AND T01.TP_IMP = 1 AND T02.IS_EMP = RST.NR_RST_EST 
AND T02.DT_IEM = (SELECT MAX(T99.DT_IEM) FROM T_IEM T99 WHERE T99.IS_EMP = T02.IS_EMP AND T99.IS_IMP = T02.IS_IMP AND T99.DT_IEM <= RST.DT_RST_EMI)) AS TX_IEM 


From T_RST RST WITH (NOLOCK)
Join T_MST MST WITH (NOLOCK) On RST.IS_RST = MST.IS_RST  
Join T_CLI CLI WITH (NOLOCK) On RST.CD_RST_CLI = CLI.IS_CLI  
Join T_FOR FORN WITH (NOLOCK)On RST.CD_RST_FSE = FORN.IS_FOR  
Join T_SER SER WITH (NOLOCK) On RST.CD_RST_PRO = SER.IS_SER  
Left Join T_SET STO WITH (NOLOCK) On RST.IS_SET = STO.IS_SET  
Left Join T_TRE_AUX TRE WITH (NOLOCK) On RST.IS_RST = TRE.IS_RST And MST.NR_MST_BIL = TRE.NR_TRS_BIL


Where RST.NR_RST_FAT = 'FT00000125'
Order By FORN.NM_FOR

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pedro, antes de mais nada, executando o plano de execução, qual o resultado? e a volumetria das tabelas envolvidas?

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, é um padrão do desenvolvedor do ERP. As tabelas possuem até um grande volume de registros, principalmente a T_RST, T_MST e T_CLI.

 

Eu quero apenas uma ajuda para melhorar o desempenho.

 

Obrigado.

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.