sql - 从连接两个表的查询中获取不同计数的最佳方法(多种连接可能性)
问题描述
我有 2 张桌子,桌子Actions
和桌子Users
。Actions
->Users
是many-one
关联。
表Actions
(有数千行)
- ID
- uuid
- 姓名
- 类型
- 由...制作
- org_id
表Users
(最多有一百行)
- ID
- 用户名
- org_id
- 组织名称
我正在尝试获得最佳连接查询以获取带有WHERE
子句的计数。我需要一个表中包含“myorg”的表中不同created_by
s的计数。另外,(= )Actions
org_name
Users
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%';
解决方案
最快的方法是修改第二个查询:
select count(*)
from Users u
where exists (select 1
from Actions a
where a.created_by = u.username
)
and u.org_name like '%myorg%';
然后最好的索引是 on actions(created_by)
。
推荐阅读
- c# - Linq 查询选择不同的顺序
- python - 如何获取 ln[]: 在 jupyter 笔记本中?
- bash - 在 bash 脚本中读取输入,该目录是路径中带有空格的目录
- javascript - 请建议如何调试
- javascript - 在 javascript 变量中添加 HTML 标记
- backbone.js - 当用户开始在搜索栏中输入时,Select2 自定义数据获取。(BackboneJS / Marionette 集合)SELECT2
- z3 - 使用 z3 有效解决 MIP 问题
- python - Python Selenium Datepicker 选择年月日
- python - Python - 使用 lxml 查找特定的 XML 元素
- visual-studio-code - 关闭除当前工作选项卡以外的所有选项卡的键盘快捷键