Пыха всегда с тобой

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 02:32:23

Страниц: [1]
Печать
Автор Тема: Наилучший способ выбрать ограниченное количество связанных записей к основным  (Прочитано 221 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Абырвалг    ↓ 
03 Август, 2011, 01:13:09
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

Вот есть у нас допустим мероприятия и участники этих мероприятий. И нужно, значит, вывести 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.
 
А как бы вы  решали такую задачу?
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
phpdude    ↓ 
03 Август, 2011, 01:34:17 , спустя 21 минуту 8 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66

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

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Абырвалг    ↓ 
03 Август, 2011, 01:45:08 , спустя 10 минут 51 секунду
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

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

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

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
phpdude    ↓ 
03 Август, 2011, 02:15:50 , спустя 30 минут 42 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

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

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Абырвалг    ↓ 
03 Август, 2011, 02:46:44 , спустя 30 минут 54 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

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

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: NRG, adw0rd