История изменений
Исправление grondek, (текущая версия) :
Я чуток ошибся, там еще окно указать надо
SELECT id, position FROM
(SELECT id, score, row_number() OVER (ORDER BY score DESC) AS "position" FROM users) AS "source"
LEFT JOIN friends WHERE ( friends.user_id = source.id )
WHERE friends.user_id = <me> ORDER BY source.score LIMIT 5;
Это очень быстро. Я у себя на боевой базе попробовал по табличке с 600000 записей с выводить top-5 по дате. Выполняется всего десятки миллисекунд
Это при том, что база развернута на моей не очень быстрой рабочей машине, а не на нормальной серверной тачке.
Исходная версия grondek, :
Я чуток ошибся, там еще окно указать надо
SELECT id, position FROM
(SELECT id, score, row_number() OVER (ORDER BY score DESC) AS "position" FROM users) AS "source"
LEFT JOIN friends WHERE ( friends.user_id = source.id )
WHERE friends.user_id = <me> ORDER BY source.score LIMIT 5;
Это очень быстро. Я у себя на боевой базе попробовал по табличке с 600000 записей с выводить top-5 по дате. Выполняется всего десятки миллисекунд