none
Consulta SQL está demorando demais. RRS feed

  • Pergunta

  • SELECT 

    A.NUM_VENDA  AS 'Numero da Venda',
    G.CODCOLIGADA         AS 'Cod. Coligada',
    G.NOMEFANTASIA        AS 'Coligada',

    B.NOME      AS 'Nome Empreendimento', 
    B.NOMEFANTASIA        AS 'Nome Fantasia Empreendimento', 
    A.VR_TOT_VENDA        AS 'Valor Financiado',

    CASE

    WHEN A.COD_SIT_VENDA = 10 THEN 'Em Preparação'
    WHEN A.COD_SIT_VENDA = 50 THEN 'Quitada'
    WHEN A.COD_SIT_VENDA = 63 THEN 'Outros'
    WHEN A.COD_SIT_VENDA = 40 THEN 'Efetivada'
    WHEN A.COD_SIT_VENDA = 60 THEN 'Cancelada'
    WHEN A.COD_SIT_VENDA = 70 THEN 'Desistencia do Cliente'
    ELSE '' END AS 'Status',

    C.NUM_UNID               AS 'Quadra', 
    C.NUM_SUB_UNID           AS 'Lote',
    D.VR_PARC AS 'Valor Pagos', 
    CONVERT(VARCHAR(30),D.DAT_LIQ_PARC,103) AS 'Data Pagamento',
    YEAR(D.DAT_LIQ_PARC) AS 'Ano - Pagamento',
    MONTH(D.DAT_LIQ_PARC) AS 'Mês - Pagamento',
    A.CODCFO                 AS 'Cód. Cliente',
    E.NOME AS 'Nome Cliente',
    E.CGCCFO                 AS 'CPF',
    CONVERT(VARCHAR(30),F.DAT_EMISS,103) AS 'Data Contrato',
    YEAR(F.DAT_EMISS) AS 'Ano - Contrato',
    MONTH(F.DAT_EMISS) AS 'Mês - Contrato',
    I.DSC_COMPN AS 'Componente Venda', 
    H.VR_PARTE_COMPN AS 'Valor Componente Venda',
    L.DSC_SIT_SUB_UNID AS 'Status Lote'



    FROM XVENDA A (NOLOCK) 
    INNER JOIN XEMPREENDIMENTO B   (NOLOCK) 
    ON (B.COD_PESS_EMPR = A.COD_PESS_EMPR)

    INNER JOIN XITEMVENDA C   (NOLOCK)
    ON (A.NUM_VENDA = C.NUM_VENDA)

    INNER JOIN XPARCELAPAGAMENTO D   (NOLOCK)
    ON (A.NUM_VENDA = D.NUM_VENDA)

    INNER JOIN FCFO E   (NOLOCK)
    ON (E.CODCFO = A.CODCFO AND E.CODCOLIGADA = A.CODCOLCFO)

    LEFT OUTER JOIN XCONTRATO F (NOLOCK)
    ON (F.NUM_CONT = A.NUM_CONT)

    INNER JOIN GCOLIGADA G (NOLOCK)
    ON (G.CODCOLIGADA = A.CODCOLIGADA)

    INNER JOIN XREGRACOMPONENTEVENDA H (NOLOCK)
    ON (H.NUM_VENDA = A.NUM_VENDA)

    INNER JOIN XCOMPONENTE I (NOLOCK)
    ON (I.COD_COMPN = H.COD_COMPN)

    INNER JOIN XUNIDADE J (NOLOCK)
    ON (J.COD_PESS_EMPR = B.COD_PESS_EMPR)

    INNER JOIN XSUBUNIDADE K (NOLOCK)
    ON (K.COD_PESS_EMPR = J.COD_PESS_EMPR AND K.NUM_UNID = J.NUM_UNID)

    INNER JOIN XSITUACAOSUBUNIDADE L (NOLOCK)
    ON (L.COD_SIT_SUB_UNID = K.COD_SIT_SUB_UNID)







    GROUP BY A.NUM_VENDA,G.CODCOLIGADA,G.NOMEFANTASIA,
    B.NOME,B.NOMEFANTASIA,A.VR_TOT_VENDA,A.COD_SIT_VENDA,C.NUM_UNID,C.NUM_SUB_UNID,D.VR_PARC,
    CONVERT(VARCHAR(30),D.DAT_LIQ_PARC,103),YEAR(D.DAT_LIQ_PARC),MONTH(D.DAT_LIQ_PARC), A.CODCFO, E.NOME, E.CGCCFO,
    CONVERT(VARCHAR(30),F.DAT_EMISS,103),YEAR(F.DAT_EMISS), MONTH(F.DAT_EMISS), I.DSC_COMPN,H.VR_PARTE_COMPN, L.DSC_SIT_SUB_UNID


    Link para baixar o plano de execução:


    http://www.4shared.com/file/XxE0m4lp/Plano_de_Execuo_SQL_1.html



    Estou executando essa rotina dentro do sistema da TOTVS e os dados não retornam! Da erro de timeout. Ao executar essa rotina no SQL Server também não é executada, da o erro de time out.

    Se eu filtrar, colocar um Where ai é apresentado os dados. Mas eu preciso trazer todos os dados.

    Olhando pelo plano de execução, alguém tem uma idéia do que pode ser?

                                 
    • Editado Brunomds terça-feira, 2 de abril de 2013 11:52
    terça-feira, 2 de abril de 2013 02:17

Respostas

  • Bruno,

    Você já verificou se as condições colocadas nos Inner Joins são verdadeiras?

    Tente executar por partes esta instrução e verificar se o SQL Server te retorna alguma coisa.

    Esta base de dados da TOTVS esta utilizando qual nível de compatibilidade?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Brunomds terça-feira, 2 de abril de 2013 19:53
    terça-feira, 2 de abril de 2013 18:34

Todas as Respostas

  • Bruno,

    Você já verificou se as condições colocadas nos Inner Joins são verdadeiras?

    Tente executar por partes esta instrução e verificar se o SQL Server te retorna alguma coisa.

    Esta base de dados da TOTVS esta utilizando qual nível de compatibilidade?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Brunomds terça-feira, 2 de abril de 2013 19:53
    terça-feira, 2 de abril de 2013 18:34
  • Pedro realmente os relacionamentos estavam incorretos.

    De qualquer forma, obrigado pelo apoio.

    terça-feira, 2 de abril de 2013 19:53