检查列中是否存在值

时间:2011-11-16 09:49:13

标签: postgresql

我想知道在查询特定表中列中是否存在varchar值时如何最大化速度。我不需要知道它在哪里,或者有多少次出现,我只想要一个true / false。当然,该列有一个索引。

现在,我有这个:

SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1);

2 个答案:

答案 0 :(得分:17)

EXISTS通常应在子查询找到满足其WHERE子句的一行时立即返回。所以我认为你的查询速度和你做的一样快。

我有点惊讶LIMIT 1似乎总是会略微加快查询速度。我没想到。您可以使用EXPLAIN ANALYZE查看效果。

EXPLAIN ANALYZE
SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1);

答案 1 :(得分:0)

在某些情况下,我在以下方面取得了成功:

SELECT count(1) > 0
WHERE column = <value>