我正在尝试在PostgreSQL中创建一个插入数据的函数。我的请求非常简单,当我在函数外部执行SQL请求时,我有很好的表现,但是当它在函数内部时,性能很糟糕。
当我这样做时:
EXPLAIN ANALYZE INSERT INTO car (name) VALUES ('test') RETURNING *;
我有很棒的表现(执行时间:0.054毫秒),这是正常的,它只是一个简单的插入请求。
但是如果我转移到这样创建的函数:
CREATE OR REPLACE FUNCTION createCar(_name text)
RETURNS SETOF car AS $$
INSERT INTO car (name) VALUES (_name) RETURNING *;
$$ LANGUAGE sql;
我执行这样的功能:
EXPLAIN ANALYZE SELECT * FROM createCar('test');
性能很差(比慢10倍,〜执行时间:1.126毫秒)。这只是一个简单的插入!
对于一个简单的SELECT函数,移动到'STABLE'函数解决了这个问题,但对于一个插入,我可以处于'VOLATILE'模式,因为我正在修改数据库......
我可能做错了,谢谢你的帮助!