sql >> Base de Datos >  >> RDS >> PostgreSQL

¿La función se ejecuta más rápido sin el modificador ESTRICTO?

¿Quizás una sobrecarga de la llamada de función repetida que se simplifica al alinear la función?

Eso es lo que supongo. Tienes una expresión muy simple ahí. Una llamada de función real presumiblemente implica la configuración de la pila, el paso de parámetros, etc.

La prueba a continuación proporciona tiempos de ejecución de 5 ms para en línea y 50 ms para estricto.

BEGIN;

CREATE SCHEMA f;

SET search_path = f;

CREATE FUNCTION f1(int) RETURNS int AS $$SELECT 1$$ LANGUAGE SQL;
CREATE FUNCTION f2(int) RETURNS int AS $$SELECT 1$$ LANGUAGE SQL STRICT;

\timing on
SELECT sum(f1(i)) FROM generate_series(1,10000) i;
SELECT sum(f2(i)) FROM generate_series(1,10000) i;
\timing off

ROLLBACK;