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;