Ir para conteúdo

POWERED BY:

Arquivado

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

victorpavia

query analyser

Recommended Posts

Boa tarde a todos,

 

Tenho uma consulta que roda em um de meus servidores no query analyser, mas em outro de teste não roda. Simplesmente fica executando mas não retorna o resultado.

Os dois servidores são windows 2003 server / SQL Server 2000. Abaixo a query:

 

 SELECT FCFO.email,FCFO.CGCCFO,FCFO.telefone,FCFO.rua,FCFO.numero,FCFO.CEP,FCFO.complemento,
    FCFO.bairro,FCFO.cidade,FCFO.codcfo,FCFO.NOME,FCFO.USUARIOCRIACAO,DTEMISSAO, NMOV,fc.mala_direta
    FROM FCFO WITH (NOLOCK)
    LEFT JOIN FCFOCOMPL FC ON (FC.CODCFO = FCFO.CODCFO)
    INNER JOIN FCFODEF ON (FCFO.CODCFO = FCFODEF.CODCFO)
    LEFT JOIN (select codcfo,max(dataemissao) AS DTEMISSAO, MAX(NUMEROMOV) as NMOV from tmov WITH (NOLOCK) group by codcfo)T1
    ON (T1.CODCFO = FCFO.CODCFO),TMOVCOMPL

      WHERE FCFODEF.CODVEN='0005'

    GROUP BY FCFO.email,FCFO.CEP,FCFO.CGCCFO,FCFO.telefone,FCFO.rua,FCFO.numero,FCFO.complemento,
    FCFO.bairro,FCFO.cidade,FCFO.USUARIOCRIACAO,FCFO.codcfo,FCFO.NOME,DTEMISSAO, NMOV, FC.mala_direta
    ORDER BY  FCFO.NOME

 

 

PS: se eu removo o "LEFT JOIN (select codcfo,max(dataemissao) AS DTEMISSAO, MAX(NUMEROMOV) as NMOV from tmov WITH (NOLOCK) group by codcfo)T1" funciona. Pode ser algum parâmetro do sql server talvez.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como que estao os indices destas tabelas? e a fragmentacao? qtde de dados? Conseguiu gerar um plano de execucao?

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este select não poderia ser substituído por um exists no where ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi cara!

 

experimente utilizar WITH (NOLOCK) nas outras tabelas onde você também está fazendo o join.

Talvez você tenha causado lock nas tabelas. Ja me ocorreu isso algumas vezes.

Como abaixo:

SELECT FCFO.email,FCFO.CGCCFO,FCFO.telefone,FCFO.rua,FCFO.numero,FCFO.CEP,FCFO.complemento,
FCFO.bairro,FCFO.cidade,FCFO.codcfo,FCFO.NOME,FCFO.USUARIOCRIACAO,DTEMISSAO, NMOV,fc.mala_direta
FROM FCFO WITH (NOLOCK)
LEFT JOIN FCFOCOMPL FC WITH (NOLOCK)
ON (FC.CODCFO = FCFO.CODCFO)
INNER JOIN FCFODEF WITH (NOLOCK)
ON (FCFO.CODCFO = FCFODEF.CODCFO)
LEFT JOIN (
select codcfo,max(dataemissao) AS DTEMISSAO, MAX(NUMEROMOV) as NMOV 
from tmov WITH (NOLOCK) 
group by codcfo
) T1
ON (T1.CODCFO = FCFO.CODCFO),TMOVCOMPL
WHERE FCFODEF.CODVEN='0005'
GROUP BY FCFO.email,FCFO.CEP,FCFO.CGCCFO,FCFO.telefone,FCFO.rua,FCFO.numero,FCFO.complemento,
FCFO.bairro,FCFO.cidade,FCFO.USUARIOCRIACAO,FCFO.codcfo,FCFO.NOME,DTEMISSAO, NMOV, FC.mala_direta
ORDER BY  FCFO.NOME

 

falow, espero ter ajudado.

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.