A
import
é executado em cada chamada de função. Este é o mesmo comportamento que você obteria se escrevesse um módulo Python normal com o import
instrução dentro de um corpo de função em oposição ao nível do módulo. Sim, isso afetará o desempenho.
Você pode contornar isso armazenando em cache suas importações assim:
CREATE FUNCTION test() RETURNS text
LANGUAGE plpythonu
AS $$
if 'json' in SD:
json = SD['json']
else:
import json
SD['json'] = json
return json.dumps(...)
$$;
Isso não é muito bonito, e melhores maneiras de fazer isso estão sendo discutidas, mas elas não acontecerão antes do PostgreSQL 9.4.