sql >> Database >  >> RDS >> PostgreSQL

Functie wordt sneller uitgevoerd zonder STRIKTE modifier?

Misschien een overhead van de herhaalde functie-aanroep die wordt weggestroomlijnd door de functie inline te plaatsen?

Dat is wat ik zou raden. Je hebt daar een heel eenvoudige uitdrukking. Een daadwerkelijke functie-aanroep omvat vermoedelijk het instellen van de stapel, het doorgeven van parameters enz.

De onderstaande test geeft looptijden van 5 ms voor inline en 50 ms voor 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. Maanden toevoegen aan een datum in PostgreSQL

  2. Is het mogelijk om van Realm naar Sqlite te migreren?

  3. PDO MySQL:PDO::ATTR_EMULATE_PREPARES gebruiken of niet?

  4. laad data spinner van sqlite en mysql