从连接两个表的查询中获得不同计数的最佳方法(多种连接可能性)

我有2个表,表actions和表Usersactions-> Usersmany-one关联。

actions(具有数千行)

  • id
  • uuid
  • 名称
  • 类型
  • created_by
  • org_id

Users(最多一百行)

  • id
  • 用户名
  • org_id
  • org_name

我正在尝试获得最佳联接查询,以使用WHERE子句获得计数。我需要表created_by中不同的actions的数量,表org_name中的Users包含“ myorg”。另外,(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%';
ad3867 回答:从连接两个表的查询中获得不同计数的最佳方法(多种连接可能性)

最快的方法是修改第二个查询:

select count(*)
from Users u
where exists (select 1
              from Actions a
              where a.created_by = u.username 
             )
and u.org_name like '%myorg%';

然后,最佳索引位于actions(created_by)上。

本文链接:https://www.f2er.com/2510471.html

大家都在问