Если вам нужно сделать заказ на голоса, используйте это:
SELECT *
FROM (
SELECT a.*, (
SELECT SUM(vote_value)
FROM votes v
WHERE v.article_id = a.id
) AS votes
FROM article a
)
ORDER BY
votes DESC
LIMIT 100, 110
Это подсчитает голоса и разбит на страницы в одном запросе.
Если вы хотите показывать только собственные голоса пользователя, используйте LEFT JOIN
:
SELECT a.*, vote_value
FROM articles a
LEFT JOIN
votes v
ON v.user_id = @current_user
AND v.article_id = a.id
ORDER BY
a.timestamp DESC
LIMIT 100, 110
Наличие индекса на (vote_user, vote_item)
значительно улучшит этот запрос.
Обратите внимание, что вы можете сделать (vote_user, vote_item)
a PRIMARY KEY
для голосов, что еще больше улучшит этот запрос.