sql >> Databasteknik >  >> RDS >> Mysql

Felaktigt radindex vid gruppering

Hittade svaret själv, var tvungen att dela upp frågan i flera underfrågor.

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

Uppenbarligen orsakade det en enorm mängd åtkomliga rader för frågan (enligt EXPLAIN ), men lyckades fixa det också med extra index. Det fullständiga svaret på det problemet finns här:Beräkning av radindex med delfråga som har joins, resulterar i A*B granskade rader




  1. Uppdatera uttalande med hjälp av with-sats

  2. Anslut till fjärransluten MySQL db från docker-behållaren

  3. Vad betyder hakparenteser i Oracle SQL-fråga?

  4. Döda MySQL-fråga vid avbrytning av användare