You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL:为特定所有者分组高效统计管理员数量

解决方案

方法1:左连接+分组统计

通过LEFT JOIN关联groups表与admins表,再按分组ID聚合统计管理员数量。只要admins表的groupId字段存在索引,Oracle会通过索引快速定位目标分组的管理员数据,避免全表扫描。

SELECT 
    g.groupId,
    g.owner,
    COUNT(a.adminId) AS adminCount
FROM groups g
LEFT JOIN admins a ON g.groupId = a.groupId
WHERE g.owner = 123
GROUP BY g.groupId, g.owner
ORDER BY g.groupId;

方法2:关联子查询

针对每个分组单独执行统计子查询,同样依赖admins表groupId上的索引,确保每次子查询仅扫描对应分组的管理员数据,而非全表。

SELECT 
    g.groupId,
    g.owner,
    (SELECT COUNT(*) FROM admins a WHERE a.groupId = g.groupId) AS adminCount
FROM groups g
WHERE g.owner = 123
ORDER BY g.groupId;

关键优化前提

必须为admins表的groupId字段创建B树索引,否则上述写法仍可能触发全表扫描:

CREATE INDEX idx_admins_groupid ON admins(groupId);

两种写法均会保留无管理员的分组(adminCount显示为0),完全匹配预期结果。

内容的提问来源于stack exchange,提问作者Maga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 05:15:32