【发布时间】:2020-07-17 02:45:44
【问题描述】:
我有 2 张桌子,桌子 Actions 和桌子 Users。 Actions -> Users 是 many-one 关联。
表Actions(有数千行)
- 身份证
- uuid
- 姓名
- 类型
- created_by
- org_id
表格Users(最多有一百行)
- 身份证
- 用户名
- org_id
- 组织名称
我正在尝试使用WHERE 子句获得最佳连接查询以获取计数。我需要表Actions 中不同created_bys 的计数,表Users 中包含“myorg”的org_name。另外,(Actions.created_by = Users.username)
我目前有以下查询(产生预期结果),想知道哪个更好,是否可以进一步优化?
查询一:
select count(distinct Actions.created_by)
from Actions join
Users
on Users.org_id = Actions.org_id
where Users.org_name like '%myorg%';
查询2:
select count(distinct Users.username)
from Users join
Actions
on Actions.created_by = Users.username
where Users.org_name like '%myorg%';
【问题讨论】:
-
这两个查询产生不同的结果。您应该使用能满足您需求的那个。
-
@GordonLinoff,更新了查询,这两个总是产生相同的结果
标签: sql postgresql join postgresql-9.6 postgresql-performance