Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Falscher Zeilenindex beim Gruppieren

Habe die Antwort selbst gefunden, musste die Abfrage in mehrere Unterabfragen aufteilen.

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

Anscheinend verursachte dies eine große Menge an aufgerufenen Zeilen für die Abfrage (gemäß EXPLAIN ), konnte das aber auch mit zusätzlichen Indizes beheben. Die vollständige Antwort auf dieses Problem finden Sie hier:Die Berechnung von Zeilenindizes mit Unterabfragen mit Joins führt zu A*B untersuchten Zeilen