PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Функцията се изпълнява по-бързо без STRICT модификатор?

Може би режийни разходи от повтарящото се извикване на функция, което е рационализирано чрез вграждане на функцията?

Това бих предположил. Имаш много прост израз там. Действителното извикване на функция вероятно включва настройка на стека, предаване на параметри и т.н.

Тестът по-долу дава времена на изпълнение от 5 мс за inlined и 50 мс за strict.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL отмяна на разрешения от pg_catalog таблици

  2. Защо IS NOT NULL е false при проверка на тип ред?

  3. Как да добавите брой дни в postgresql datetime

  4. Намерете разликата между времевите марки в секунди в PostgreSQL

  5. Как Asind() работи в PostgreSQL