PostgreSQL性能 - 检查返回布尔值的函数中是否存在行

时间:2015-06-24 15:04:49

标签: performance postgresql

我正在尝试在PostgreSQL中创建一个函数,如果存在一行,则返回truefalse。它在SQL中非常简单,性能也很好:

SELECT exists (SELECT 1
 FROM Users u
 WHERE u.id = $1)

但是当我尝试使用此代码创建一个函数时,性能非常糟糕:

CREATE OR REPLACE FUNCTION userExist(userId integer) 
RETURNS boolean AS $$ 
 SELECT exists (SELECT 1
     FROM User u
     WHERE u.id = $1);
 $$ LANGUAGE sql STABLE;

我这样称呼这个函数:

EXPLAIN ANALYZE SELECT * FROM userExist(1);

似乎问题与我之前提出的问题(PostgreSQL Performance - SELECT vs Stored function)相同,但我上次得到的答案在这种情况下不起作用。

0 个答案:

没有答案