是否有“max”函数和分组的替代(聚合操作的性能优化)?

2024-02-10

我有一个很大的查询,它也返回很大的响应。查询如下所示:

SELECT group, subgroup, max(last_update) FROM
(
    SELECT a as group, a1 as subgroup, d1 as last_update FROM....
    UNION ALL
    SELECT b as group, b1 as subgroup, d2 as last_update FROM....
    UNION ALL
    SELECT c as group, c1 as subgroup, d3 as last_update FROM....
    UNION ALL
    SELECT d as group, d1 as subgroup, d3 as last_update FROM....
    UNION ALL
    SELECT e as group, e1 as subgroup, d4 as last_update FROM....
    ... and some more selects (15 select queries in total)
) GROUP BY group, subgroup;

如您所见,我需要从某些组加载最大日期。问题是这些日期需要从 15 个选择中加载,而且运行速度非常慢(~4 秒)。我测试了那个子选择

SELECT a as group, a1 as subgroup, d1 as last_update FROM....
UNION ALL
SELECT b as group, b1 as subgroup, d2 as last_update FROM....
UNION ALL
SELECT c as group, c1 as subgroup, d3 as last_update FROM....
UNION ALL
SELECT d as group, d1 as subgroup, d3 as last_update FROM....
UNION ALL
SELECT e as group, e1 as subgroup, d4 as last_update FROM....
... ans some more selects

工作得相当快(~0.1s),问题在于分组功能(这就是查询工作缓慢的原因):

SELECT group, subgroup, max(last_update) FROM
(
    ...
) GROUP BY group, subgroup;

有什么办法可以改进这个分组吗?正如我所写,目标是获取组中每个子组的最大日期。


也许做group by在每个单独的子查询中?

select g, s, max(last_update) from (
  select g, s, max(last_update) as last_update from t1 group by g, s
  union all
  select g, s, max(last_update) as last_update from t2 group by g, s
  union all
  ...
)
group by g, s

我不能肯定地说,但如果服务器正在为查询构建临时行集,那么这可能会减少该临时行的大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有“max”函数和分组的替代(聚合操作的性能优化)? 的相关文章

  • linq2sql,存储库模式 - 如何从两个或多个表查询数据?

    我使用存储库模式 和 linq2sql 作为数据访问 并拥有例如 ProductsRep 和 CustomersRep 在非常简单的场景中 数据库有两个表 产品 产品 ID 客户 ID 产品名称 日期 和顾客 客户 ID 名字 姓氏 每个存
  • Oracle 按月滚动或运行总计

    目标 每个月末所有报表的滚动 运行总计 Code select TRUNC ACTHX STMT HX STMT DATE MM AS MNTH COUNT ACTHX INVOICE as STMTS from ACTHX group b
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • 最近邻居的 Postgis SQL

    我正在尝试计算最近的邻居 为此 我需要传递一个参数来限制与邻居的最大距离 例如 半径1000米内最近的邻居是哪些 我做了以下事情 我用数据创建了表 id name latitude longitude 之后 我执行了以下查询 SELECT
  • 如何对多行的一列值求和?

    我有这个表 我想添加几行的 change 列的值 或者更准确地说 从 ne 值为零的行到 ne 值为零的下一行 不是第二个本身 任何答案将不胜感激 rn date ne change 0 2008 12 07 0 10330848398 1
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • IIS7 上的 ASP.NET 应用程序 - iisreset 后启动速度非常慢

    我有一个在 Windows 2008 上的 IIS7 下运行的 ASP NET 3 5 网站 当我重新启动 IIS iisreset 然后点击一个页面时 初始启动非常慢 我在 Process Explorer 中看到以下活动 w3wp ex
  • 如何计算 Postgres 上图表中所有连接的节点(行)?

    我的桌子有account id and device id One account id可以有多个device ids 反之亦然 我正在尝试计算每个连接的多对多关系的深度 Ex account id device id 1 10 1 11
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • 如何引用下一行的数据?

    我正在 PostgreSQL 9 2 中编写一个函数 对于股票价格和日期的表 我想计算每个条目较前一天的百分比变化 对于最早一天的数据 不会有前一天 因此该条目可以简单地为 Nil 我知道WITH声明可能不应该高于IF陈述 到目前为止 这就
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 如何更新 pl/sql 中嵌套表的列? [复制]

    这个问题在这里已经有答案了 我正在尝试在表中创建一个可以存储多个值的列 如下所示 我有一个学生id std和一个名为marks可以采用几个值 例如2 3 4 我想更新此列表以添加另一个标记2 3 4 5但我不知道怎么做 我如何更新专栏mar
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • 将数据从 oracle 移动到 HDFS,处理并从 HDFS 移动到 Teradata

    我的要求是 将数据从 Oracle 移至 HDFS 处理HDFS上的数据 将处理后的数据移至 Teradata 还需要每 15 分钟执行一次整个处理 源数据量可能接近50GB 处理后的数据也可能相同 在网上搜索了很多之后 我发现 PRARO
  • python 日志记录会刷新每个日志吗?

    当我使用标准模块将日志写入文件时logging 每个日志会分别刷新到磁盘吗 例如 下面的代码会将日志刷新 10 次吗 logging basicConfig level logging DEBUG filename debug log fo

随机推荐

  • Selenium Grid 与不同主机上的 Docker 容器

    我喜欢使用官方 Docker 镜像在 AWS 上设置 Selenium Grid 可以在此处找到https github com SeleniumHQ docker selenium https github com SeleniumHQ
  • 从 Docker 容器获取环境变量

    从 docker 容器获取环境变量的最简单方法是什么尚未在 Dockerfile 中声明的内容 例如 通过某些方式设置的环境变量docker exec container bin bash会议 我可以docker exec containe
  • python 中的 3D 卷积

    我需要编写一段代码 使用 numpy 在 python 中使用 3x3 内核执行 3D 卷积 我已经对像黑白图像这样的 2D 数组做了正确的处理 但是当我尝试将其扩展到像 RGB 这样的 3D 数组时 情况就变得一团糟 我需要帮助来改进我的
  • C 二进制文件与文本文件的效率

    我是 C 语言新手 我需要一些帮助 假设我只需要在文件中存储 6 位数字 假设 int 的大小等于 4 使用文本文件或二进制文件哪个更有效 就内存而言 我不太确定如何面对这个问题 欢迎任何帮助 大多数人将文件分为两类 二进制文件和 ASCI
  • DirectWrite (CreateTextFormat) 如何选择后备字体?

    的文档创建文本格式 http msdn microsoft com en us library windows desktop dd368203 v vs 85 aspx没有提及字体回退选择 但如果选择默认 NULL 系统 集合 则 Dir
  • @BOOL 属性设置器

    我在使用设置 BOOL 时遇到问题 property and synthesize 我在用着 property BOOL isPaused 我可以通过使用得到它 myObject isPaused 但我无法设置它 我想用 myObject
  • 列出 CRAN 上可用的所有软件包以进行控制台[重复]

    这个问题在这里已经有答案了 想要获取 Windows 控制台上 CRAN 上可用的所有软件包的列表 我知道这一定很简单 因为在 Windows GUI 上有一个手动选项可以单击安装 此时会弹出另一个菜单界面 其中包含 CRAN 上可用的所有
  • Linux shell:检测 CSV 日志文件的状态更改

    这是我自动生成的日志文件 连续一分钟检查我的互联网线路 cat log csv 2018 04 27 23 37 OK 2018 04 27 23 38 OK 2018 04 27 23 39 OK 2018 04 27 23 40 ERR
  • 将上传的文件保存到磁盘在 Flask 中不起作用[重复]

    这个问题在这里已经有答案了 我想将任何上传的图像存储到名为 logo png 的 static customlogos 文件夹中 无论其实际名称是什么 我有一个基本的 Flask 设置 其中包含典型的静态和模板文件夹 为了简单起见 我在下面
  • 如何知道是否有 git rebase 正在进行?

    当我开始一个git rebase i 我可以发出这样的命令git rebase continue or git rebase abort 这些命令仅在变基正在进行时才有效 我如何知道是否正在进行变基 我非常感谢有关 rebase 内部如何工
  • 如何在两个片段之间切换,而不需要每次都重新创建片段?

    我正在开发一个 Android 应用程序 它使用导航抽屉在两个片段之间切换 然而 每次切换时 片段都会完全重新创建 这是我主要活动的代码 The click listener for ListView in the navigation d
  • 如何在 Visual Studio Community 2013 中创建 ASP.NET MVC 5 Web 应用程序?

    我尝试在全新安装 Visual Studio Community 2013 后启动 MVC 5 项目 但是当我转到 新建项目 gt 模板 gt Visual C gt Web gt Version2012 我在中间窗格中看到的只是 ASP
  • 传递给模板函数的两个 lambda 使得参数的类型推导不明确——为什么?

    我有一个模板 如果我向它传递一个 lambda 它就可以工作 但是在一个将两个 lambda 映射到同一模板化类型的相关模板中 它无法推断出该类型 并且 MSVC Express 2013 抱怨模板参数不明确 首先要明确的是 这里没有发生重
  • 找到坐标 x 和 y 列表的优化位置

    我是编程新手 尤其是Python新手 但我正在努力学习它 到目前为止我发现它非常令人着迷 我有一个包含 30 个固定坐标 x 和 y 的列表 x np array 13 10 12 13 11 12 11 13 12 13 14 15 15
  • UIButton 状态已选择

    我看过很多有关更改所选按钮图像的信息 但作为新人 我在实现更简单的版本时遇到了一些麻烦 当按下按钮时 它会变暗 我希望它在被选择后保持这种状态 所以有几个问题 我是否为按钮创建 IBOutlet 然后使用 IBAction 来更改状态 例如
  • 从 pandas dropna 中排除特定列

    我有一个数据框 我想删除除特定列之外的所有列中的值 NA 在本例中为 V1 df V1 V2 V3 V4 A 10 20 NA B NA NA NA C 5 20 3 D 15 20 4 E NA 10 5 output V1 V2 V3
  • Node dotenv 不适用于 pm2

    我有一个应用程序 其中本地 没有 pm2 所有环境变量 env使用文件工作得很好dotenv 但在我使用的服务器上pm2要运行应用程序 环境变量仍然存在undefined 我用来在服务器上运行应用程序的 pm2 命令是 pm2 start
  • 无法激活机架(〜> 1.4.0,运行时)已激活机架1.5.0

    我已经寻找这个问题的答案一天多了 并彻底搜索了 StackOverflow 我了解正在发生的冲突 我应该卸载不需要的 Rack 版本 但事情是这样的 我正在Koding上开发 http koding com http koding com
  • 对于日期序列化:从 JAXB2 到 jackson-dataformat-xml 的 @XmlJavaTypeAdapter 的等效注释是什么?

    我有一个 Spring Web 应用程序4 3 6版本 在某种程度上 它可以与 XML 和 JSON 一起使用 对于 Json 我使用 Jackson 对于 XML 我曾经使用过JAXB2 但不再是因为它不支持通用集合 通用集合表示如下 p
  • 是否有“max”函数和分组的替代(聚合操作的性能优化)?

    我有一个很大的查询 它也返回很大的响应 查询如下所示 SELECT group subgroup max last update FROM SELECT a as group a1 as subgroup d1 as last update