![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| fenec |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
Всем привет!
Работаю на проекте социальной сети, делаем с нуля. Необходимо найти оптимальное (наиболее быстрое и простое) решение для вывода сообщений, комментариев к ним, прикреплений (фотки, ссылки и тп) и голосов за сообщения и комментарии. Сейчас все выводится в цикле вот так:
аналогично получаются прикрепления, фотки и тп. решение простое, но запросы идут в цикле, что увеличивает их количество в несоклько раз (хотя они и небольшие). есть такой вариант:
получает отдельными запросами комменты и сообщения и уже на программном уровне пишем все в один массив, но по-моему это слишком запутанно. наверное, можно на уровне sql сделать, но наверное там запрос совсем дикий получится. Кто что посоветует? Как вообще это делается в социалках? (я смотрел socialEngine - там первый вариант) Это сообщение отредактировал(а) fenec - 20.7.2011, 17:23 |
||||
|
|||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
||||
|
||||
| fenec |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
|
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
а кто где?
вообщем можно получить "простыню" одним запросом при помощи left join`ов например, потом эту простыню выводить в нужном порядке средствами php. |
|||
|
||||
| fenec |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
JOINами получится огромный запрос тк нужно еще получать инфу о пользователе, который оставил сообщение, комментарий или голос. Но вообще согласен, сам склоняюсь к этому варианту как наиболее быстрому.
|
|||
|
||||
| patap |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 3 Всего: 40 |
интересный вопрос...
я сейчас подобную задачу решаю. Сразу введу договоренность: - один раз на страницу выводится n сообщений - предполагается, что сообщения должны выводиться в порядке, зависящем от даты комментария относящегося к сообщению. Т.е. последнее прокомментированное сообщение должно быть первым. - Также к каждому сообщению нужно выводить три последних коммента. немного таблицы изменил (т.к. не пойму что занчат некоторые поля)
пока что остановился на следующем алгоритме: 1. на основе таблиц messages и comments нужно получить n сообщений отсортированных по дате последних комментов в сообщении примерно так
2. затем делаем из полученного результата получаем данные
3. теперь надо получить комменты к сообщению.
достаем для каждого сообщения по три последних коммента
4. аналогино как с комментами, достаем инфу по лайкам, только не нужно ограничивать выборку как-то так. не знаю может есть лучше способ. смущает немного, то, что цикл где обрабатываем комменты в холостую гоняет, когда к примеру у сообщений комментов по 100 будет Добавлено @ 13:07 код писал прям сюда, может где-то напортачил немного Это сообщение отредактировал(а) patap - 22.7.2011, 14:07 -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
||||||||||
|
|||||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |