繁体   English   中英

SQL-选择具有最大和,效率的行

[英]SQL - Selecting rows with max sums, efficiency

我从表player_info和表player_map_info的time_played列具有max(sum())的行中进行选择。 player_map_info的主键是(player_id,color,map),我想在所有地图上获得播放时间最多的颜色。

我正在使用以下查询:

SELECT A.*, 
       B.color AS main_color, 
       B.maxtp 
FROM   player_info A 
       LEFT OUTER JOIN (SELECT E.player_id, 
                               E.color, 
                               Max(sumtp) AS maxtp 
                        FROM   player_map_info C 
                               LEFT OUTER JOIN (SELECT player_id, 
                                                       color, 
                                                       Sum(time_played) AS sumtp 
                                                FROM   player_map_info 
                                                GROUP  BY player_id, 
                                                          color) E 
                                            ON C.player_id = E.player_id 
                                               AND C.color = E.color 
                        GROUP  BY E.player_id) B 
                    ON A.player_id = B.player_id 
WHERE  A.user_id = :user_id 

我正在使用SQLite。 在我的数据库上执行此操作仅需不到0.1秒的时间。

问题:有什么方法可以使此查询的执行速度更快? (对于加入等所有细微差别,我还是一个新手。)

只需取出与用户相关的内容即可:

SELECT C.color, maxtp 
FROM   player_map_info C 
inner join (SELECT max(time_played) AS maxtp 
                FROM   player_map_info 
                ) mx
) B ON c.time_played = mx.maxtp

内部查询mx获得最大的time_played,外部查询重新连接至它以获取颜色。 那将获得最多的颜色。

为了更快。 好吧,在0.1秒时,您不太可能大幅增加。

干杯-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM