Utilizando cache no Oracle com subquery

[ad#texto]

Vimos que a troca de contexto deve ser evitada a fim de obtermos uma melhor performance em nossas aplicações PL/SQL, porém existe uma exceção a esta regra, tudo devido a um recurso da Oracle chamado de scalar subquery caching.

Este recurso consiste na capacidade do Oracle de determinar quais registros serão sempre retornados quando executamos uma subquery dentro de uma query e desse modo armazena este conjunto de resultados em cache deixando sua reutilização muito mais rápida, assim mesmo utilizando a troca de contexto conseguimos obter uma performance superior.

Porém estes recurso deve ser utilizado com cuidado a fim de ser implementado de forma correta.

Vamos supor a seguinte query em uma tabela com mais de 1 milhão de registros:

select lower(nome) nome, idade  from suaTabela

Este é um método tradicional (comum) para executar uma query, porém, utilizando em nosso benefício a aplicação do scalar subquery caching temos:

select (select lower(nome) from dual) nome, idade from suaTabela

Observem que a subquery select from dual não tem aplicação pratica alguma, somente irá impor ao Oracle a determinação do conjunto de resultados e dessa forma gerar o mecanismo de scalar subquery caching, onde iremos obter um ganho de performance em torno de 15% a 20%.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.