【问题标题】:Check value if exists in column检查值是否存在于列中
【发布时间】:2011-11-16 09:49:13
【问题描述】:

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

现在,我有这个:

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

【问题讨论】:

标签: postgresql


【解决方案1】:

一旦子查询找到满足其 WHERE 子句的行,EXISTS 通常应该返回。所以我认为你的查询是尽可能快的。

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

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

【讨论】:

  • 你能告诉我查询通常如何用于此(检查是否存在最大速度)
【解决方案2】:

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

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

【讨论】:

  • “在某些情况下”是什么意思?
  • @SafwanLjd 令人惊讶的是,在某些情况下使用 'count(1) > 0' 会更快,而在其他情况下存在更快。在大多数情况下,'count(1) > 0' 会使代码看起来更干净。
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2020-07-23
  • 2022-08-26
  • 2019-02-22
  • 2017-03-17
  • 2019-07-06
  • 1970-01-01
相关资源
最近更新 更多