sql >> Database teknologi >  >> RDS >> Mysql

Forkert rækkeindeks ved gruppering

Fandt selv svaret, måtte adskille forespørgslen i flere underforespørgsler.

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

Det forårsagede tilsyneladende en enorm mængde af adgangsgivende rækker for forespørgslen (som pr. EXPLAIN ), men det lykkedes også at rette op på det med ekstra indekser. Det fulde svar på det problem kan findes her:Beregning af rækkeindekser med underforespørgsel med joinforbindelser resulterer i A*B undersøgte rækker




  1. Håndtering af data fra flere udvalgte felter

  2. Få lignende længde- og breddegrad fra databasen

  3. Kan tabelkolonner med en fremmednøgle være NULL?

  4. MySQL database tabel til HTML tabel