Mysql 有什么方法可以快速计算MAX()吗?

Mysql 有什么方法可以快速计算MAX()吗?,mysql,Mysql,我正在尝试执行以下查询: SELECT A.* , (SELECT MAX(B.Date2) FROM Tab2 B WHERE A.ID = B.ID AND A.Date > B.Date2) AS MaxDate FROM Tab A 这是可行的,但是当您有很多行时,运行它需要很多时间。有没有更快的方法可以达到同样的效果 谢谢大家! 编辑: 表dé定义如下: Tab : (dd-mm-yyyy) ID | Date 1 | 19-01-2018 1 |

我正在尝试执行以下查询:

SELECT 
    A.*
    , (SELECT MAX(B.Date2) FROM Tab2 B WHERE A.ID = B.ID AND A.Date > B.Date2) AS MaxDate
FROM
    Tab A
这是可行的,但是当您有很多行时,运行它需要很多时间。有没有更快的方法可以达到同样的效果

谢谢大家!

编辑:

表dé定义如下:

Tab : (dd-mm-yyyy)
ID | Date
1  | 19-01-2018
1  | 14-01-2018
2  | 18-02-2019
3  | 20-03-2019

Tab2:
ID  | Date2
1   | 10-01-2018
1   | 15-01-2018
1   | 20-01-2018
2   | 15-02-2019
2   | 21-02-2019
3   | 25-03-2019
我希望我的查询返回:

ID  | Date       | MaxDate 
1   | 19-01-2018 | 15-01-2018
1   | 14-01-2018 | 10-01-2018
2   | 18-02-2019 | 15-02-2019
3   | 20-03-2019 | NULL

谢谢

这对我来说是意外的,但这个查询起了作用:

SELECT
    A.ID
    , A.Date
    , MAX(B.Date2) AS MaxDate
FROM
    Tab A
    left outer join Tab2 B
        on A.ID = B.ID and A.Date > B.Date2
GROUP BY
    A.ID, A.Date
;

我不知道当MAX()的列位于另一个表中时,我们可以将表中的列放入group by中。

这对我来说是意外的,但此查询起到了作用:

SELECT
    A.ID
    , A.Date
    , MAX(B.Date2) AS MaxDate
FROM
    Tab A
    left outer join Tab2 B
        on A.ID = B.ID and A.Date > B.Date2
GROUP BY
    A.ID, A.Date
;

我不知道,当MAX()的列位于另一个表中时,我们可以将表中的列放入组中。

对于性能相关的问题,包括表定义和解释计划是很有帮助的。我用表定义编辑了我的帖子!表定义将包括列名键等。尝试显示创建和剪切粘贴输出对于性能相关的问题,包括表定义和解释计划很有帮助。我用表定义编辑了我的帖子!表定义将包括列名键等。请尝试显示创建并剪切粘贴输出