sql >> データベース >  >> RDS >> Mysql

遅いランキングクエリを最適化する

    これを試してください:

    SELECT  t.*, cnt
    FROM    (
            SELECT  team_id, COUNT(*) AS cnt
            FROM    (
                    SELECT  player_id, MAX(id) AS mid
                    FROM    player_team
                    GROUP BY
                            player_id
                    ) q
            JOIN    player_team pt
            ON      pt.id = q.mid
            GROUP BY
                    team_id
            ) q2
    JOIN    team t
    ON      t.id = q2.team_id
    ORDER BY
            cnt DESC
    LIMIT 50
    

    player_team (player_id, id)にインデックスを作成します (この順序で)これが高速に機能するため。



    1. 1台のマシン上の複数のMySQLインスタンス

    2. Knee-Jerk PerfMonカウンター:ページの平均余命

    3. 最小カウントの行を選択(*)

    4. 不可解なデッドロックを説明する