PostgreSQL函数INSERT与原始SQL INSERT的性能不佳

时间:2015-07-31 09:04:24

标签: sql postgresql database-performance

我正在尝试在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'模式,因为我正在修改数据库......

我可能做错了,谢谢你的帮助!

0 个答案:

没有答案