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