Mysql
 sql >> Base de données >  >> RDS >> Mysql

Index de ligne incorrect lors du regroupement

J'ai trouvé la réponse moi-même, j'ai dû séparer la requête en plusieurs sous-requêtes.

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

Apparemment, cela a causé une énorme quantité de lignes consultées pour la requête (selon EXPLAIN ), mais a également réussi à résoudre ce problème avec des index supplémentaires. La réponse complète à ce problème peut être trouvée ici :Le calcul des indices de ligne avec une sous-requête ayant des jointures donne des lignes A*B examinées