Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance PostgreSQL性能-检查返回布尔值的函数中是否存在行_Performance_Postgresql - Fatal编程技术网

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

Performance PostgreSQL性能-检查返回布尔值的函数中是否存在行,performance,postgresql,Performance,Postgresql,我试图在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 F

我试图在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);

这个问题似乎与我之前提出的一个问题()相同,但我上次得到的答案在这种情况下不起作用。

您有一个标量函数,它返回单个值。不要把它放在
from
子句中,使用
selectuserexist(1)
Ok,否则无论是否使用
from
,性能都完全相同。您有一个标量函数,返回单个值。不要把它放在
from
子句中,使用
selectuserexist(1)正常,否则无论是否使用来自的