Otimização de Consulta
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
Discussão (5)
Carregando comentários...