sql >> Databasteknik >  >> RDS >> PostgreSQL

Fungerar funktionen snabbare utan STRICT modifierare?

Kanske en overhead från det upprepade funktionsanropet som strömlinjeformas bort genom att infoga funktionen?

Det är vad jag skulle gissa. Du har ett väldigt enkelt uttryck där. Ett verkligt funktionsanrop involverar förmodligen stackinstallation, överföring av parametrar etc.

Testet nedan ger körtider på 5ms för inlined och 50ms för strikt.

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;


  1. T-SQL Stuff Kommando

  2. Inaktivera PostgreSQL-kontroller av främmande nyckel för migrering

  3. DB-kontroll närmar sig sin död

  4. Vad används '$$' för i PL/pgSQL