| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Вывод записей (аналог стены вконтакте, MySQL) |
| Автор: fenec 20.7.2011, 17:08 | ||||
| Всем привет! Работаю на проекте социальной сети, делаем с нуля. Необходимо найти оптимальное (наиболее быстрое и простое) решение для вывода сообщений, комментариев к ним, прикреплений (фотки, ссылки и тп) и голосов за сообщения и комментарии. Сейчас все выводится в цикле вот так:
аналогично получаются прикрепления, фотки и тп. решение простое, но запросы идут в цикле, что увеличивает их количество в несоклько раз (хотя они и небольшие). есть такой вариант:
получает отдельными запросами комменты и сообщения и уже на программном уровне пишем все в один массив, но по-моему это слишком запутанно. наверное, можно на уровне sql сделать, но наверное там запрос совсем дикий получится. Кто что посоветует? Как вообще это делается в социалках? (я смотрел socialEngine - там первый вариант) |
| Автор: fenec 20.7.2011, 17:39 | ||
|
| Автор: triclosan 20.7.2011, 17:44 |
| а кто где? вообщем можно получить "простыню" одним запросом при помощи left join`ов например, потом эту простыню выводить в нужном порядке средствами php. |
| Автор: fenec 20.7.2011, 21:48 |
| JOINами получится огромный запрос тк нужно еще получать инфу о пользователе, который оставил сообщение, комментарий или голос. Но вообще согласен, сам склоняюсь к этому варианту как наиболее быстрому. |
| Автор: patap 22.7.2011, 13:05 | ||||||||||
| интересный вопрос... я сейчас подобную задачу решаю. Сразу введу договоренность: - один раз на страницу выводится n сообщений - предполагается, что сообщения должны выводиться в порядке, зависящем от даты комментария относящегося к сообщению. Т.е. последнее прокомментированное сообщение должно быть первым. - Также к каждому сообщению нужно выводить три последних коммента. немного таблицы изменил (т.к. не пойму что занчат некоторые поля)
пока что остановился на следующем алгоритме: 1. на основе таблиц messages и comments нужно получить n сообщений отсортированных по дате последних комментов в сообщении примерно так
2. затем делаем из полученного результата получаем данные
3. теперь надо получить комменты к сообщению.
достаем для каждого сообщения по три последних коммента
4. аналогино как с комментами, достаем инфу по лайкам, только не нужно ограничивать выборку как-то так. не знаю может есть лучше способ. смущает немного, то, что цикл где обрабатываем комменты в холостую гоняет, когда к примеру у сообщений комментов по 100 будет Добавлено @ 13:07 код писал прям сюда, может где-то напортачил немного |