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

グループ化時に行インデックスが正しくない

    自分で答えを見つけ、クエリを複数のサブクエリに分割する必要がありました。

    SELECT
        mq.*,
        @indexer := @indexer + 1 AS indexer
    FROM
    (
        SELECT
            p.id,
            p.tag_id,
            p.title,
            p.created_at
        FROM 
            `posts` AS p
        LEFT JOIN
            `votes` AS v
                ON p.id = v.votable_id
                AND v.votable_type = "Post"
                AND v.deleted_at IS NULL
        WHERE
            p.deleted_at IS NULL
        GROUP BY
            p.id
    ) AS mq
    JOIN
        (SELECT @indexer := 0) AS i
    

    どうやら、それはクエリのために大量のアクセスされた行を引き起こしました(EXPLAINによる) )、しかし、追加のインデックスでそれも修正することができました。その問題に対する完全な答えはここにあります:結合を持つサブクエリを使用して行インデックスを計算すると、A*Bで検査された行が生成されます




    1. Oracleデータベーステーブルの列の文字セットの定義

    2. 最適化する必要があるQueryでのGroupbyの奇妙な動作

    3. Amazon RDSとMySQLを使用したEC2のそれぞれの利点/制限は何ですか?

    4. Oracle PL/SQLからJavaクラス/EJBへの移行を選択する