我有一个很大的查询,它也返回很大的响应。查询如下所示:
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;
有什么办法可以改进这个分组吗?正如我所写,目标是获取组中每个子组的最大日期。