sql >> データベース >  >> RDS >> PostgreSQL

関数はSTRICT修飾子なしでより速く実行されますか?

    たぶん、関数をインライン化することによって合理化された、繰り返される関数呼び出しからのオーバーヘッド?

    それが私が推測することです。そこには非常に単純な表現があります。実際の関数呼び出しには、おそらくスタックのセットアップ、パラメーターの受け渡しなどが含まれます。

    以下のテストでは、インラインで5ミリ秒、ストリクトで50ミリ秒の実行時間が得られます。

    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. Access2016でデータベースからパスワードを削除する方法

    2. MySqlエラー150-外部キー

    3. SQL:クエリのデフォルトの順序は何ですか?

    4. MySQLの各カテゴリのトップ10レコードを選択