|
|
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, у меня следующая проблема, есть две таблицы, таблица комментариев и таблица вложений к ним, связываются они по полю id_comment в таблице вложений и id в таблице комментариев. Проблема в том, что я не знаю как правильно получать и выводить комментарии сразу с вложениями, интересует именно правильный способ, лучший в плане производительности. Мне на ум приходит лишь следующее: 1) выбирать комментарии объединив пути к вложениям с помощью group_concat, а затем, при выводе, разбивать в explode() по разделителю (подозреваю что может выскочить лимит на длину строки в group_concat, вроде 1024 по умолчанию). 2) при проходе по комментариям делать по запросу для каждого из них и получать вложения. 3) сделать обычный join, появятся дубликаты комментариев, с помощью php брать комментарий из первого, при повторении брать только вложения из остальных. Все эти способы кажутся мне извращенством, но гугление не дало результатов, если кто подскажет оптимальное решение данной проблемы - буду очень благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 17:48:45 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
zironix, В большинстве случаев -- третий вариант с жоинтом. Но бывает по разному. В первую очередь -- анализируйте требования к показу. Если коментариев несколько или строго заданое количесво (10-20 на страницу) и надо показать вложения сразу(!) для всех коментариев --- тогда жоинт однозначно. НО лучше продумать какойнибудь "ленивый" процесс, когда пользователь видит коментарий и количество вложений и если захочет, то ткнет еше одну кнопку и получит вложения только для заданого коментария. Это хорошо если вложения тяжелые. AJAX тоже полезно будет для скорости. при "ленивом" варианте первый запрос будет легким а по требованию будут отдельные запросы на вложения для одного коментария. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 20:42:28 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
javajdbc, если вложений несколько к одному комментарию, то можно избежать дубликатов через GROUP_CONCAT вложений внутри джойна и разверткой их на клиенте обратно в список вложений. Но это если они - легкие. а можно ещё предложить джойнить ровно одно (первое) вложение и подсчитывать их количество. Тогда можно показывать первое вложение сразу на вывод, и делать кнопарь "ещё 100500 вложений". а можно... чёт фантазия разыгралась на ночь глядя... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 22:26:22 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
Arhat109, Да, кстати забыл. "лучший способ" - сильно зависит от особенностей данных (в частности размер вложений и их количество к коментарию), их объема, объемности выборки и т.д. вплоть до количества мозгов у конкретного сервера и его нагрузки. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 22:29:10 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Наверное буду использовать вариант с разбором дубликатов на сервере, просто думал что есть возможность получать от MySQL что-то типа: комментарий --вложение1 --вложение2 комментарий2 --вложение1 Одним запросом и в удобном для php виде, но видимо я слишком многого хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 11:00:07 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
zironix, можно и 1 запросом, но непонятно зачем???? Вот почему все хотят все 1-м запросом??? Ну построй нормальную базу, вылижи все отношения, построй индексы, потом 1-м запросом, зачем оно тебе 1-м запросом, если у тебя ни база, ни сервер не оптимизированы и этот 1 запрос у тебя всю базу уложит. зачем объясни мне это 1 -м запросом,,,,,,,,,,,,,,,,,,,,???????????????????? Модератор: Да, эмоции лучше сдерживать. Или, по крайней мере, выражать их цензурно. Пост поправлен. Если был искажен смысл - не обижайтесь, в следующий раз пишите сами так, чтобы не пришлось править. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 03:09:43 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
MikkiMouseВот почему все хотят все 1-м запросом???Шоб было за... ну вы поняли :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 08:33:35 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
MikkiMousezironix, можно и 1 запросом, но непонятно зачем???? Вот почему все хотят все 1-м запросом??? Ну построй нормальную базу, вылижи все отношения, построй индексы, потом 1-м запросом, зачем оно тебе 1-м запросом, если у тебя ни база, ни сервер не оптимизированы и этот 1 запрос у тебя всю базу уложит. зачем объясни мне это 1 -м запросом,,,,,,,,,,,,,,,,,,,,???????????????????? Ну потому, что я не хочу долбить базу просто так количеством запросов, равным количеству комментариев и надеялся что есть какой-то оптимальный способ для данной задачи, который мне не известен, так что такая агрессия мне не понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:47:59 |
|
||
|
Получение вложений к комментариям
|
|||
|---|---|---|---|
|
#18+
Ну если не невтерпеж то можно сделать Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:50:49 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38477116&tid=1835646]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 290ms |

| 0 / 0 |
