query usando pipelied function ou tabela temporária ??

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

Boa tarde galera..
seguinte... há algum tempo eu li o artigo sobre as Pipelied table function postada aqui http://glufke.net/2011/07/21/pipelined- ... -virtuais/
e comecei a usar esta função não para técnicas de ETL mais substituindo no lugar de gerar tabela temporárias.

Ex: eu executo uma query usando o Bulk collect populando um array, depois com esse array populado eu preencho esses dados em uma tabela temporária e o meu reports faz um select simples nesse tabela temporária.
Usando as pipelined eu pulo a parte de inserir na tabela temporária e já faço o select direto no array (select * from table(fkg_array)).

Porém a minha dúvida é qual dos 2 processo é mais performático e de certa forma mais correto seguindo idéias de melhores práticas.

teoricamente o uso da pipelined seria melhor no caso de muita informação pois usa menos leitura de bloco, más não sei como o oracle gerencia essas pipelined function, tenho medo desse processo "estuprar" a memória do banco.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5018
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Pois é... o bom de usar bulk, array, etc é que é SUPER rapido.
Mas o preço é alto: consumo da memória. Então isso tem que ser usado com "sabedoria".

Na minha opinião, todas features do banco tem pontos positivos e negativos. Então é a gente que decide qual usar para aquilo que estamos querendo. Se algo fosse bom PRA TUDO, certamente essa forma seria implantada como padrão pela Oracle!

Eu particularmente gosto bastante de usar GTT.
Responder
  • Informação