Mysql最小/最大优化

Mysql最小/最大优化,mysql,database,optimization,query-optimization,Mysql,Database,Optimization,Query Optimization,我有一张桌子(我们称之为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

我有一张桌子(我们称之为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    | 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
我的目标是按id对行进行分组,并获得dateA的最小值和dateB的最大值 然后得到一张像这样的桌子:

    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    | 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
现在,我正在使用左连接方法:

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

使用一次遍历表而不使用自联接的简单组有什么问题

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

哈哈,搞什么鬼?我发誓上次没用(我一定试错了)