
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
18.08.2013, 20:22:47
|
|||
|---|---|---|---|
|
|||
Один большой запрос или много маленьких |
|||
|
#18+
Доброе время суток. Помогите советом, пишу для сайта функцию личных сообщений с вложенными файлами. В одном сообщении можно прикрепить несколько файлов.Для файлов создал отдельную таблицу, как положено. Вопрос в том, как эти файлы вытаскивать при просмотре списка личных сообщений. Можно составить один большой запрос в котором запрашиваются все файлы к выведенным на экран личным сообщениям. Или уже в момент публикации на экран списка сообщений запрашивать к каждому сообщению прикрепленные файлы? Может ошибаюсь, но второй вариант мне кажется лучше, есть возможность закешироваться запросам, но не дает покоя, что их уж будет много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2013, 21:28:21
|
|||
|---|---|---|---|
|
|||
Один большой запрос или много маленьких |
|||
|
#18+
ldar, на добавление в базу, лучше добавлять сразу (multiple insert) а вот чтение . тут эксперементально. Нащот кеширования. приведу надуманый пример, а дальше думай сам. у нас социальная сеть, для каждого юзера есть список сообщений(первые 50) скажем, вторая страничка вторые 50 и подобное. и есть возможность отфильтровать список из 50 - показать только от девочек, или только от мальчиков. скорей всего выгодно закешировать будет список всех 50, а прииспользовании фильтра, фильтровать уже в скрипте. ЗЫ мысль понял? иногда выгодней ради кеширования, кешировать более общий результат, а потом скриптом дофильтровывать при выводе, чем запрашивать выборку заново. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2013, 21:41:10
|
|||
|---|---|---|---|
|
|||
Один большой запрос или много маленьких |
|||
|
#18+
alex564657498765453, Если честно не до конца понял, вы предлагаете вытаскивать все прикрепленные файлы к 50 сообщениям сразу? То тогда никакого кеширования не будет, ведь при добавлении одного сообщения уже будет производится выборка других 50 сообщений, ну и так же при фильтрации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2013, 23:08:45
|
|||
|---|---|---|---|
|
|||
Один большой запрос или много маленьких |
|||
|
#18+
ldar, я не предлагаю, а привел пример. юзер читая свои сообщения будет часто попадать на список первых 50!!! вот их явно можно захотеть в кеш кинуть, на если ещо есть варианты фильтра, то фильтровать лучше кодом. а ты уже сам смотри. тебя ведь этот момент смущал, что кешировать по отдельной ситуации - много, а всё скопом, то скриптом надо будет отфильтровывать. - я тебе написал. в кеширование более общего результата и доконца фильтровать в скрипте нет ничего плохого. такое используют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2013, 23:12:11
|
|||
|---|---|---|---|
|
|||
Один большой запрос или много маленьких |
|||
|
#18+
ldar, так ты файлы в базе данных кранишь??? зачем??. а ещо можно делать ещо проще..если тебе файл больше никак не нужен, только для отображения ссылок вконтексте сообщений. - так толкай сразу в поле таблицы сообщения серилизованый масив - информаци о файлах. ИЛИ у тебя есть опция - просмотр фложеных файлов только картинок, или вывести отдельно мп3 файлы из всех сообщений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2013, 23:15:48
|
|||
|---|---|---|---|
Один большой запрос или много маленьких |
|||
|
#18+
ldarДля файлов создал отдельную таблицу, как положено.А как Вы ее сделали... что там храните, как она связана с таблицей сообщений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.08.2013, 09:48:03
|
|||
|---|---|---|---|
|
|||
Один большой запрос или много маленьких |
|||
|
#18+
alex564657498765453, меня смущает как лучше, логичней и эффективней использовать запросы, сразу запросить файлы к 50 сообщениям. Или 50 запросов на каждое сообщение. К примеру (пишу код на коленке) Код: sql 1. или 50 раз вызвать Код: sql 1. Второй вариант ИМХО лучше, так как эти запросы с легкостью закешируются в mysql и будут летать как пули. Но смущает что количество запросов 50. Но припоминается что сам mysql под капотом JOIN пропускоет через FOR, т.е. получается те же 50 запросов, но уже под капотом. А насчет таблицы с файлами, я храню только имя файла и его относительный путь а связь происходит обычным ключом по id_message c таблице сообщений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1836219]: |
0ms |
get settings: |
5ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 312ms |

| 0 / 0 |
