La import
se ejecuta en cada llamada de función. Este es el mismo comportamiento que obtendría si escribiera un módulo de Python normal con import
instrucción dentro de un cuerpo de función en oposición a nivel de módulo.
Sí, esto afectará el rendimiento.
Puede solucionar esto almacenando en caché sus importaciones de esta manera:
CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
json = SD['json']
else:
import json
SD['json'] = json
return json.dumps(...)
$$;
Es cierto que esto no es muy bonito, y se están discutiendo mejores formas de hacerlo, pero no sucederán antes de PostgreSQL 9.4.