Eu sou um novato tentando aprender sobre otimização de consultas e tabelas temporárias no Oracle.
Os exemplos que vi para tabelas temporárias do Oracle envolvem instruções CREATE TABLE e INSERT INTO.
CREATE PRIVATE TEMPORARY TABLE ora$ppt_temp1( id INT, description VARCHAR2(100) ) ON COMMIT DROP DEFINITION; INSERT INTO ora$ppt_temp1(id,description) VALUES(1,'Transaction-specific private temp table');
No meu caso (IBM Maximo), minhas consultas são instruções SELECT puras (visualizações, etc.), então não posso incluir outras instruções como CREATE TABLE ou INSERT INTO.
Mas me deparei com um blog sobre SQL Performance que descreve algumas funcionalidades relacionadas no PostgreSQL que parecem úteis:
O PostgreSQL 12+ automaticamente materializa (aloca a saída na memória) CTEs que são chamadas mais de uma vez.
Para meus olhos destreinados, a ideia de materialização automática parece atraente. Isso poderia me ajudar a evitar executar CTEs várias vezes (desnecessariamente).
Existe uma maneira de fazer esse tipo de coisa no Oracle? (evitando a necessidade de instruções CREATE TABLE e INSERT INTO)
A
MATERIALIZE
dica naWITH
cláusula faz isso.A outra maneira é
INLINE
:No exemplo acima, o banco de dados escolhe o último mesmo sem
INLINE
dica.