Ir para conteúdo

POWERED BY:

Arquivado

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

Aquiles3000

Lentidão em view com UNION

Recommended Posts

Olá a todos !Tenho uma view com UNION de duas querys que está apresentando uma lentidão sensível. Quando rodo cada uma das querys individualmente o tempo de resposta é bem rápido (inferior a 1s). Entretanto qdo incluo o UNION passa a demorar bastante para que retorne dados (mais de 2 min). Por favor, alguém saberia me dizer o que posso verificar/fazer para otimizar essa view ?AbraçosAquiles

Compartilhar este post


Link para o post
Compartilhar em outros sites

sinistro, muito sinistro...

tenta colocar os dados numa tabela virtual (temporária) e fazer o select na virtual, aqui tem um exemplo de tabela temporária: http://forum.imasters.com.br/index.php?showtopic=224865, posta ai depois se o resultado

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Eriva !

Não tenho certeza se entendi, mas seguindo sua sugestão fiz o seguinte teste :

 

CREATE TABLE #TMP_TESTE (ID_TST INT, CD_TST CHAR(5))

 

INSERT #TMP_TESTE ( ID_TST, CD_TST )

SELECT A.ID_TST,

A.CD_TST

FROM TABELA1 A WITH (NOLOCK)

 

INSERT #TMP_TESTE ( ID_TST, CD_TST )

SELECT B.ID_TST,

B.CD_TST

FROM TABELA2 B WITH (NOLOCK)

 

SELECT ID_TST,

CD_TST

FROM #TMP_TESTE

 

DROP TABLE #TMP_TESTE

 

Dessa forma o retorno foi bem rápido, mantendo o tempo das querys individuais. Mas o problema é que pra disponibilizar para o usuário utilizando tabela temporária eu teria que colocar numa proc. Só que quem vai chamar o serviço precisa necessariamente utilizar uma view.....

Já tentei alterar a ordem das querys no union e a ordem dos joins, sem sucesso.....você acha que criar a view indexada poderia resolver ?

 

Abs

Aquiles

Compartilhar este post


Link para o post
Compartilhar em outros sites

podes cre view não aceita tabela virtualo jeito é tenta fazer a view indexadaantes tenta fazer um teste, coloca um order by no union outra possível solução (alternativa) seria: criar uma função que retorna uma tabela (nesse caso as virtuais seria aceitas na função) e na view fazer o select direto na função...

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.