sql - 对父字段按 v Max() 或 MIN() 分组
问题描述
如果我有一个父子关系,并且我希望从子表中获取一个聚合,count(*)、SUM() 并不重要。
但我也希望从父表中返回多个字段,我可以按所有父字段分组或按父项的主键分组,并在不在主键中的父字段周围使用 MIN()。
问题是哪个最有效?
按所有父字段分组或将它们作为 Min(ParentFieldnnn) 作为 ParentFieldnnn 拉回来?
解决方案
按单列分组应该更有效。所以按 id 分组并使用聚合函数,例如min()
.
如果您在该键上有一个索引,这实际上会更有效。
当您有一堆键时,数据库通常会对所有键进行排序或散列 - 因此需要移动所有数据。
推荐阅读
- c# - 如何从 UI 图像中获取着色器中的对象空间(DisableBatching 似乎不起作用)
- flutter - ListTile 中的前导图像溢出
- sql - 需要使用来自其他 3 列之一的值创建一列
- javascript - 如何修复在提交点击移动设备时冻结的加载 GIF,并修复加载后点击显示的 GIF
- c - 在运行时访问 build-id
- javascript - 如何在 Mustache 模板中调用 JavaScript 函数
- string - 如何修复mapreduce中mapper的设置方法给出的字符串值的不规则行为?
- visual-studio-code - VSCode:CMD + 单击转到定义返回“无法打开'文件名':找不到文件”错误
- json - 将一个 JSON 转换为另一个 w/circe
- bash - 将 exec 与 & 一起使用时,最终命令不会运行