Tunning Oracle PL/SQL: minimizando o uso de conversão de datatype

[ad#texto]

Tunning em aplicações Oracle PL/SQL em primeiro momento se concentram em otimizar a arquitetura implementada no banco de dados e também na otimização das query´s, pois estes são os dois maiores vilões de uma baixa performance, contudo alguns pequenos truques podem ajudar na otimização de uma aplicação Oracle PL/SQL.

A primeira (e mais simples) regra para melhorar a performance é minimizar as conversões de datatypes no Oracle.

Para quem não se lembra, ou nunca reparou, o Oracle PL/SQL faz algumas conversões implícitas de seus datatypes, veja um exemplo:

DECLARE
 texto CHAR(5);

BEGIN
 texto := 25;
END;

Veja que no exemplo acima atribuímos um inteiro para uma variável do tipo caracter e o Oracle fez implicitamente a conversão do datatype do valor enviado pela rotina PL/SQL, isso resume o processo de desenvolvimento e até mesmo deixaria o código-fonte PL/SQL “mais limpo”, porém isso é uma má prática quando falamos de performance, pois o ideal é o seguinte:

DECLARE
 texto CHAR(5);

BEGIN
 texto := ‘25’;
END;

E isso ocorre para qualquer tipo de conversão de datatype implícita ou explícita no Oracle PL/SQL, vejam mais exemplos:

DECLARE
 num NUMBER;
 texto CHAR(5);

BEGIN
 num :=  n + 15;      -- conversão implícita, é lenta
 num :=  n + 15.0;    -- sem conversão, mais rápido
 texto:= 25;          -- conversão implícita, é lenta
 texto:= TO_CHAR(25); -- conversão explícita, ainda é lenta
 texto:= '25';        -- sem conversão, mais rápido
END;

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.