【发布时间】:2015-12-09 20:10:48
【问题描述】:
我想查询数据库是否存在一个或多个满足给定谓词的行。但是,我对存在这样的一行、两行或一百万行之间的区别不感兴趣——只要有“零”或“一个或多个”。而且我不希望 Postgres 浪费时间生成我不需要的精确计数。
在 DB2 中,我会这样做:
SELECT 1 FROM SYSIBM.SYSDUMMY1 WHERE EXISTS
(SELECT 1 FROM REAL_TABLE WHERE COLUMN = 'VALUE')
然后检查查询返回的是零行还是一行。
但是 Postgres 没有可用的虚拟表,那么最好的选择是什么?
如果我自己创建一个单行虚拟表并使用它来代替 SYSIBM.SYSDUMMY1,查询优化器是否足够聪明以至于在运行查询时不会实际读取该表,否则会“做正确的事”?
【问题讨论】:
标签: sql postgresql exists