Acelerando suas consultas PL/SQL

[ad#texto]
Sei que tunning no PL/SQL é polêmico, pois o assunto envolve além das regras e características intrínsecas do banco de dados Oracle também características únicas do sistema operacional em execução do servidor, estrutura do hardware, método da instalação e configuração do banco Oracle.

Assim existem os casos reais e documentados e as boas práticas para que o seu PL/SQL execute da forma mais rápida possível assim como também existe coisas que aprendemos na prática que nem sempre funcionam em todos os ambientes e que nem sempre estão documentadas pela Oracle, por este motivo é que profissionais com experiência prática são tão concorridos no mercado.

Por isso, se vocês fizerem o que eu direi neste post e não surtir efeito ou ainda piorar a performance do seu PL/SQL não me responsabilizo, afinal a informática é a única ciência exata onde dois mais dois são cinco.

Até a versão 8 do banco de dados Oracle a ordem da cláusula where importava, e muito, na performance da select, após a versão 8 a Oracle implementou a heurística avançada, dando “inteligência” ao banco de dados para que o mesmo conseguisse otimizar seu próprio funcionamento de acordo com a relevância que uma select ou fragmento PL/SQL teria para a sua aplicação de modo geral. Isso aumentou a performance geral do banco e permitiu dinamizar as aplicações que faziam uso do Oracle.

Resumindo, a ordem de se montar o where perdeu importância (essa informação foi atestada por um DBA certificado da Oracle com o qual conversei).

Nem sempre, afinal a informática é exata até certo ponto.

Tenho notado em dois ambientes, leia-se empresas diferentes, que utilizam o banco de dados Oracle que a ordem do where pode ainda impactar no cálculo que a heurística executa, incrementando ou decrementando a performance da sua select.

Em suma, eu sempre procuro colocar os meus parâmetros o mais elevado possível, em select complexas e mais lentas consegui medir uma ligeira melhora no desempenho, seria algo assim:

select *
from sua_tabela ta
 ,sua_tabela2 tb
where ta.campo1 = 34
 and tb.campo5 = 3
 and ta.campo2 = tb.campo2
 and ta.campo6 = tb.campo6

Notaram que os campos comparados por parâmetros estão acima?

Se alguém quiser e testar poste os resultados aqui.


Descubra mais sobre ViamaisBLOG

Assine para receber nossas notícias mais recentes por e-mail.

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.