Rails: эффективный запрос для объектов X до / после модели в ранжированном списке - PullRequest
2 голосов
/ 21 января 2012

У меня есть модель, у которой есть позиция (или оценка , число с плавающей точкой) в ранжированном списке. Например, у меня есть:

Объект А, оценка 27,7

Объект Б, оценка 20,3

Объект С, оценка 15,3

где A будет считаться имеющим позицию № 1, B - № 2 и C - № 3 в ранжированном списке.

Я пытаюсь эффективно определить положение любого объекта на основе их оценки и X объектов, которые находятся выше / ниже этого объекта. Есть ли драгоценный камень или запрос, который я могу построить, чтобы сделать это? Я мог бы загрузить все объекты и перебрать их, но я хотел бы найти более эффективный способ сделать это, поскольку у меня есть тысячи объектов.

1 Ответ

3 голосов
/ 21 января 2012

Это все о компромиссах (как и все в этом мире).

  1. Точность за эффективность.

    Самое простое решение состоит в том, чтобы вытянуть все записи в память и рисуноквне ранг там.Или вы можете написать несложный SQL-запрос.

  2. Эффективность за точность.

    Предварительный расчет (сохранить его в столбце) и запускать регулярные задания для обновленияЭто.Возьми этот самый сайт.Ранг лиги обновляется один раз в день.И это работает довольно быстро.: -)

  3. Точность и эффективность по сравнению с потреблением памяти и простота администрирования.

    Настройка экземпляра Redis .Он имеет быстрые операции с отсортированными наборами.Вы будете платить более сложным кодом, большим количеством движущихся частей в вашем проекте и увеличенным потреблением памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...