Usuário com melhor resposta
Consulta SQL está demorando demais.

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
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
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
-