ФорумРазработкаБазы данных → Наилучший способ выбрать ограниченное количество связанных записей к основным

Наилучший способ выбрать ограниченное количество связанных записей к основным

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 3 августа 2011 г. 13:13

    Вот есть у нас допустим мероприятия и участники этих мероприятий. И нужно, значит, вывести 20 мероприятий и по 10 участников к каждому. Какие варианты?

    1) сейчас сделано простыми такими запросами в цикле. И я не думаю, что это пиздец какое плохое решение, далее это будет видно

    2) лучше всего это дело наверно сделано нативно в mongodb ($slice) http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields

    3) мы можем хранить айди 10 записей в таблице мероприятий, потом после выборки мероприятий через один where in выбрать нужных нам участников

    4) типа того, но не храним а делаем group concat (получаем больше 10, но потом ограничиваем до 10)

    5) выборка через переменные

    Но тут задача несколько усложняется - выбирать нужно не просто 10 каких-то участников, а сортировать их по дате последнего визита (новые сверху). Вот тут у нас сразу отпадают варианты 2, 3.

    А как бы вы решали такую задачу?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 августа 2011 г. 13:34, спустя 21 минуту 8 секунд

    А как бы вы решали такую задачу?

    раньше любым из приведенных тобой примеров, сейчас я ы тупо повесил триггер на изменение таблицы участников и сделал сводную таблицу, в которой хранил бы только по 10 пиздюков жаждущих на следующий митинг за какого нить пидораса, за который будет выплачено 250 рублей на харю
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 3 августа 2011 г. 13:45, спустя 10 минут 51 секунду

    как бы вариант, да, но
    Но тут задача несколько усложняется - выбирать нужно не просто 10 каких-то участников, а сортировать их по дате последнего визита (новые сверху)


    то есть нам нужно выбрать участников, заджоинить к ним пользователей, отсортировать по last_visit_date и только тогда взять лимит 10
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 августа 2011 г. 14:15, спустя 30 минут 42 секунды

    как бы вариант, да, но

    прости, ты понимаешь что я не читал тво текст больше 2 строк :-)

    ну при последнем визите писать в ту таблицу)) либо вообще в memcache склаыдвать айдишники митингов и участников, а там уже делать срез из последних и складывать только сортрованный остаток
    Спустя 22 сек.
    мемкеш - чтобы сильно ио не грузить, а то логин - обычная операция и частая)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 3 августа 2011 г. 14:46, спустя 30 минут 54 секунды

    логин - обычная операция и частая

    у нас это даже не при логине а при просмотре любой страницы.

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

    ваще не понял как это

Пожалуйста, авторизуйтесь, чтобы написать комментарий!