我想知道在查询特定表中列中是否存在varchar
值时如何最大化速度。我不需要知道它在哪里,或者有多少次出现,我只想要一个true
/ false
。当然,该列有一个索引。
现在,我有这个:
SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1);
答案 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>