自分で答えを見つけ、クエリを複数のサブクエリに分割する必要がありました。
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
どうやら、それはクエリのために大量のアクセスされた行を引き起こしました(EXPLAIN
による) )、しかし、追加のインデックスでそれも修正することができました。その問題に対する完全な答えはここにあります:結合を持つサブクエリを使用して行インデックスを計算すると、A*Bで検査された行が生成されます