MySql 从 2 个不同的列中获取具有最大修订版的行

MySql get row with max revision from 2 different column

这是我的 Table:

id  dl_id   rev1    rev2  
1    48      1       0  
2    48      1       1  
3    50      0       2  
4    50      1       2  
5    50      2       1  

这是通缉结果:

id  dl_id  
2   48  
4   50

rev2 比 rev1 具有更高的优先级,所以我想要 dl_id 的 id 和 max revison。

这是我的查询:

select distinct dl_id,  
  (select id from myTable   
   where  dl_id=m.dl_id  
   order by rev2 desc,rev1 desc limit 0,1) as id  
from myTable m 

我的查询太慢了,运行 花了 4 秒。 我需要更好的查询

例如(并注意索引):

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,dl_id INT NOT NULL
,rev1 INT NOT NULL 
,rev2 INT NOT NULL
,UNIQUE(dl_id,rev1,rev2)
);

INSERT INTO my_table VALUES
(1    ,48    ,1    ,0),
(2    ,48    ,1    ,1),
(3    ,50    ,0    ,2),
(4    ,50    ,1    ,2),
(5    ,50    ,2    ,1);

SELECT x.*
  FROM my_table x
  JOIN
     ( SELECT a.dl_id
            , a.rev2
            , MAX(a.rev1) rev1
         FROM my_table a
         JOIN 
            ( SELECT dl_id
                   , MAX(rev2) rev2 
                FROM my_table 
               GROUP 
                  BY dl_id
            ) b
           ON b.dl_id = a.dl_id 
          AND b.rev2 = a.rev2
        GROUP
           BY a.dl_id
            , a.rev2
     ) y
    ON y.dl_id = x.dl_id
   AND y.rev2 = x.rev2
   AND y.rev1 = x.rev1;

+----+-------+------+------+
| id | dl_id | rev1 | rev2 |
+----+-------+------+------+
|  2 |    48 |    1 |    1 |
|  4 |    50 |    1 |    2 |
+----+-------+------+------+