A partir de la versión 11g de Oracle, se han introducido varias mejoras en el lenguaje de programación PL/SQL. Una de estas mejoras tiene que ver con el tipo de dato PLS_INTEGER, este es similar al INTEGER pero con un eficiencia mucho mayor. En esta versión, Oracle introduce el tipo de dato SIMPLE_INTEGER, el cual ofrece un rendimiento mucho mayor que el PLS_INTEGER.
El siguiente código compara el rendimiento entre estos dos tipos de datos:
DECLARE
inicio NUMBER;
ciclos NUMBER := 100000000;
l_pls_integer PLS_INTEGER := 0;
l_pls_integer_incr PLS_INTEGER := 1;
l_simple_integer SIMPLE_INTEGER := 0;
l_simple_integer_incr SIMPLE_INTEGER := 1;
BEGIN
inicio := to_Char(sysdate, 'SS');
FOR i IN 1 .. ciclos LOOP
l_pls_integer := l_pls_integer + l_pls_integer_incr;
END LOOP;
DBMS_OUTPUT.put_line('PLS_INTEGER: ' || (to_Char(sysdate, 'SS') - inicio) || ' seg');
inicio := to_Char(sysdate, 'SS');
FOR i IN 1 .. ciclos LOOP
l_simple_integer := l_simple_integer + l_simple_integer_incr;
END LOOP;
DBMS_OUTPUT.put_line('SIMPLE_INTEGER: ' || (to_Char(sysdate, 'SS') - inicio) || ' seg');
END;
DECLARE
inicio NUMBER;
ciclos NUMBER := 100000000;
l_pls_integer PLS_INTEGER := 0;
l_pls_integer_incr PLS_INTEGER := 1;
l_simple_integer SIMPLE_INTEGER := 0;
l_simple_integer_incr SIMPLE_INTEGER := 1;
BEGIN
inicio := to_Char(sysdate, 'SS');
FOR i IN 1 .. ciclos LOOP
l_pls_integer := l_pls_integer + l_pls_integer_incr;
END LOOP;
DBMS_OUTPUT.put_line('PLS_INTEGER: ' || (to_Char(sysdate, 'SS') - inicio) || ' seg');
inicio := to_Char(sysdate, 'SS');
FOR i IN 1 .. ciclos LOOP
l_simple_integer := l_simple_integer + l_simple_integer_incr;
END LOOP;
DBMS_OUTPUT.put_line('SIMPLE_INTEGER: ' || (to_Char(sysdate, 'SS') - inicio) || ' seg');
END;
El resultado al ejecutar este script es el siguiente:
PLS_INTEGER: 5 seg
SIMPLE_INTEGER: 4 seg
Muchos desarrolladores continuamos utilizando la sintaxis antigua de Oracle, sin darnos cuenta de las nuevas mejoras que en cada versión se estan incorporando al lenguaje.
Hola Mario, estoy iniciándome en PL/SQL y ver esta mejora de Oracle que por la fecha de tu publicación fue hace ya 5 años atrás! excelente reporte, saludos
ResponderEliminar