gpt4 book ai didi

Mysql 最小/最大优化

转载 作者:行者123 更新时间:2023-11-29 08:54:44 24 4
gpt4 key购买 nike

我有一个表(我们称之为 tableA),看起来像这样:

    id    |   dateA    |   dateB    
----------|------------|-------------
1 | 2011-01-01 | 2010-05-01
1 | 2011-05-01 | 2010-06-12
2 | 2011-01-11 | 2010-01-31
2 | 2011-01-31 | 2010-02-01
3 | 2011-05-11 | 2010-08-02
3 | 2011-08-02 | 2010-09-10

我的目标是按 id 对行进行分组,并获取 dateA 的最小值和 dateB 的最大值并得到一个看起来像这样的表:

    id    | min(dateA) | max(dateB)
----------|------------|-------------
1 | 2011-01-01 | 2010-06-12
2 | 2011-01-11 | 2010-02-01
3 | 2011-05-11 | 2010-09-11

现在,我正在使用 LEFT 连接方法:

SELECT
id,
tableB.dateA,
tableC.dateB
FROM tableA as a

LEFT JOIN (
SELECT id, min(dateA)
FROM tableA
GROUP BY id
)tableB ON a.id = tableB.id

LEFT JOIN (
SELECT id, max(dateB)
FROM tableA
GROUP BY id
)tableC ON a.id = tableC.id

但是,我的方法太慢了。我有一个相当大的表,大约需要 7 秒才能获得所需的结果。

有人可以建议我一种适合我的情况的好的优化技术吗?

谢谢。

J

最佳答案

使用一次遍历表且没有自联接的简单 GROUP BY 有什么问题?

SELECT id, MIN(dateA), MAX(dateB)
FROM TableA
GROUP BY id;

关于Mysql 最小/最大优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com