我正在尝试在PostgreSQL中创建一个函数,如果存在一行,则返回true
或false
。它在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)相同,但我上次得到的答案在这种情况下不起作用。