Imagem de fundo

O desaninhamento de subconsulta é uma otimização disponível...

O desaninhamento de subconsulta é uma otimização disponível no Oracle que converte uma subconsulta em uma junção na consulta externa, permitindo que o otimizador considere a(s) tabela(s) de subconsulta durante o caminho de acesso, método de junção e seleção de ordem de junção. As consultas (a) e (b) exemplificam respectivamente uma subconsulta ALL e uma subconsulta EXISTS. Os atributos dessas tabelas usadas podem ser inferidos a partir dessas consultas SQL:


(a) SELECT C.sobrenome, C.renda

FROM clientes C

WHERE C.codc <> ALL (SELECT V.codc FROM vendas V WHERE V.valor > 1000);


(b) SELECT C.sobrenome, C.renda

FROM clientes C

WHERE NOT EXISTS (SELECT 1 FROM vendas V WHERE V.valor > 1000 and V.codc = C.codc);


Considere as assertivas abaixo sobre a otimização baseada em desaninhamento de subconsultas no Oracle:


I. O recurso fundamental do desaninhamento de subconsultas é a conversão da subconsulta com processamento relacionado em outra equivalente com processamento não relacionado.

II. No caso de uma subconsulta ALL, o desaninhamento explora semi-join.

III. No caso de uma subconsulta NOT EXISTS, o desaninhamento explora o anti-join.


Quais estão corretas?


A

Apenas I.


B

Apenas II.


C

Apenas III.


D

Apenas II e III.


E

I, II e III.