Ir para conteúdo

Arquivado

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

Motta

Por que uma coluna de tabela virtual torna SQL Oracle lenta

Recommended Posts

favorita

Boas.

Sem querer deixar o assunto muito "gasoso" mas queria apenas dicas de coisas a investigar no ambiente.

Tenho uma SQL que usa uma tabela virtual , por uma série de motivos que não vem muito ao caso.

Algo como :

select *
from
(select a,b,c,x,virtual.d
from tabela1,
(select a,b,c,d
from tabela2
where ....) virtual
where virtual.a = tabela1.a
and virtual.b = tabela1.b
virtual
.c = tabela1.c)

A SQL executa rápido , mas preciso fazer um teste do tipo

select *
from
(select a,b,c,virtual.d
from tabela1,
(select a,b,c,d
from tabela2
where ....) virtual
where virtual.a = tabela1.a
and virtual.b = tabela1.b
virtual
.c = tabela1.c)
where ((c <> d) or (a=1))

Ao fazer isto a SQL fica extremamente lenta.

O que poderia ser investigado.

Não sei se detalhes do tipo descrição , índices etc ajudariam, a questão básica é :

Por que usar uma coluna de uma tabela virtual torna uma SQL no Oracle lenta ?

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso interesse a outrem , resolvi com um HINT

SELECT /*+USE_CONCAT*/ * from
(select a,b,c,virtual.d
from tabela1,
(select a,b,c,d
from tabela2
where ....) virtual
where virtual.a = tabela1.a
and virtual.b = tabela1.b
virtual
.c = tabela1.c)
where ((c <> d) or (a=1))

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.