gpt4 book ai didi

postgresql - 确定 PostgreSQL 中关系之间路径的存在

转载 作者:行者123 更新时间:2023-11-29 13:27:04 24 4
gpt4 key购买 nike

我有一个 PostgreSQL 9.4 数据库存储组织和人员表。有一个 organization_person 表将组织与人联系起来。组织有多个人,人可能属于多个人组织。

我希望能够有效地回答查询:对于给定的组织 X,在该组织之间是否存在路径,通过至多一个人,对集合 S 中的任何组织,组织集合将某个 bool 字段设置为 true?

只需要找到通过人的两跳连接。无需查找 X -- Person -- Y -- Person -- s。

集合 S 有大约 10,000 个条目。大多数组织不在 S 中。这是为了在线查询目的,而不是离线分析或其他批处理。 S 的更新较少;每天大约添加 150 次,删除一些。

我愿意使用 PostgreSQL 的高级功能或扩展,或者其他数据库技术,如果它们更适合该任务。我只需要知道这样一条路径是否存在,而不是它的成员。我是愿意在 PostgreSQL 中使用一定量的非规范化来做到这一点,但我不确定如何整合更改,例如对S的成员资格,以一种理智和高效的方式方式。

最佳答案

如果我没理解错的话,你要找一个在组织X的人和一个在S的组织。这可以用SQL查询来表示:

select 1
from s join
organization_person op
on op.organzation_id = s.organization_id join
organization_person opx
on opx.organization_id = 'x' and
opx.person_id = op.person_id
limit 1;

这将受益于 organization_person(organization_id, person_id)organization_person(person_id, organization_id) 的索引。

关于postgresql - 确定 PostgreSQL 中关系之间路径的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31799821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com