我有2个表,表Actions
和表Users
。 Actions
-> Users
是many-one
关联。
表Actions
(具有数千行)
表Users
(最多一百行)
我正在尝试获得最佳的联接查询,以使用WHERE
子句获得计数。我需要表created_by
中包含[myorg]的Actions
中表org_name
的不同Users
的计数。另外,([Actions.created_by
= Users.username
)
我目前有以下查询(产生预期的结果),不知道哪个更好,是否可以进一步优化?
查询1:
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%';
最快的方法是修改第二个查询:
select count(*)
from Users u
where exists (select 1
from Actions a
where a.created_by = u.username
)
where u.org_name like '%myorg%';
然后最佳索引在actions(created_by)
上。