sql >> Database teknologi >  >> RDS >> PostgreSQL

Funktionen udføres hurtigere uden STRICT modifikator?

Måske en overhead fra det gentagne funktionskald, der strømlines væk ved at inline funktionen?

Det ville jeg gætte på. Du har et meget simpelt udtryk der. Et egentligt funktionskald involverer formentlig stack-opsætning, videregivelse af parametre osv.

Testen nedenfor giver køretider på 5 ms for inlinet og 50 ms for strenge.

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. En oversigt over de nye lagrede procedurer i PostgreSQL 11

  2. Sådan forbinder du GraphQL og PostgreSQL

  3. Sådan ændres sekunder til en tidsværdi i MySQL

  4. Sådan fungerer SQLite Nullif()