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

现在,我有这个:

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

推荐答案

通常,只要子查询找到满足WHERE子句的一行,EXISTS就会返回.所以我认为你的查询速度是最快的.

我有点惊讶,LIMIT 1似乎总是略微加快查询速度.我没想到.你可以看到EXPLAIN ANALYZE的效果.

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

Postgresql相关问答推荐

Trunc函数不删除小数

在输入稍有错误的PostgreSQL表中进行快速字符串搜索

可以向判断枚举值的SQL列添加约束吗?

在PostgreSQL中是否有与SQLite R*Tree类似功能?

使用pg_repack从PostgreSQL中的表中删除OID

如何在不同的行中显示两列,避免重复并省略空条目

在 Age Viewer 上看不到 node 的第一个属性

Psycopg2 在大型 Select 查询中耗尽内存

Select 空字段

从没有行的计数中获取 0 值

你如何在postgresql中做mysqldump?

获取全文搜索配置语言的完整列表

获取 psycopg2 count(*) 结果数

如何使用 Django Migrations 重新创建已删除的表?

Postgresql 中的 NOT EXISTS 子句

Rails PG::UndefinedTable:错误:missing FROM-clause entry for table

如何将 PostgreSQL 查询输出导出到 csv 文件

如何为 postgres 编写 DELETE CASCADE?

使用 PostgreSQL 的 Linq To Sql

重命名 Amazon RDS 主用户名