import
すべての関数呼び出しで実行されます。これは、import
を使用して通常のPythonモジュールを作成した場合と同じ動作です。 モジュールレベルではなく、関数本体内のステートメント。
はい、これはパフォーマンスに影響します。
次のようにインポートをキャッシュすることで、これを回避できます。
CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
json = SD['json']
else:
import json
SD['json'] = json
return json.dumps(...)
$$;
確かにこれはあまりきれいではなく、これを行うためのより良い方法が議論されていますが、PostgreSQL9.4より前では起こりません。