sql >> Databáze >  >> RDS >> Mysql

Nesprávný index řádku při seskupování

Odpověď jsem našel sám, musel jsem dotaz rozdělit do více poddotazů.

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

Zjevně to způsobilo obrovské množství zpřístupněných řádků pro dotaz (podle EXPLAIN ), ale podařilo se to napravit také pomocí dalších indexů. Úplnou odpověď na tento problém lze nalézt zde:Výpočet indexů řádků s poddotazem, který má spojení, vede ke zkontrolovaným řádkům A*B




  1. VYBERTE všechna nejnovější klíčová slova odlišná od záznamu s nenulovou hodnotou v jednom sloupci

  2. Jaký je účel $CONDITIONS pod --query?

  3. mysql odstranit v nouzovém režimu

  4. Praktický výběr procesoru pro úlohy SQL Server 2014/2016 OLTP