SQL:如何检查关系中的行是否存在?

SQL:如何检查关系中的行是否存在?,sql,postgresql,Sql,Postgresql,我有一个第一个表和一个相关的第二个表,第一个表有一个外键 第二个表中的行数可以从零行到数百万行(timeseries数据) 当向最终用户显示第一个表的行时,我想显示第二个表中是否有相关行-是或否,而不是更多 目前,我离开了join表并对第二个表进行计数。但我怀疑这是一种缓慢且消耗资源的方法,仅用于确定第二个表中是否有相关行 SELECT first.id, first.title, Count( second.id ) as count FROM first LE

我有一个第一个表和一个相关的第二个表,第一个表有一个外键

第二个表中的行数可以从零行到数百万行(timeseries数据)

当向最终用户显示第一个表的行时,我想显示第二个表中是否有相关行-是或否,而不是更多

目前,我离开了join表并对第二个表进行计数。但我怀疑这是一种缓慢且消耗资源的方法,仅用于确定第二个表中是否有相关行

SELECT
    first.id,
    first.title,
    Count( second.id ) as count
FROM
    first
LEFT JOIN
    second
ON
    first.id = second.first_id
GROUP BY
    first.id
ORDER BY
    count DESC
在这两个表的主键
id
中都有索引。数据库是PostgrSQL


在这里,什么是更快和/或更少消耗资源的方法?

我会使用标量子选择,而不是联接:

select f.*, 
       exists (select * from second s where s.first_id = f.id) as rows_in_second_exists
from first
exists
操作符将在找到行后立即停止查找第二个表。在
second(first\u id)
上的索引将加快速度