Оптимальная выборка

kevmen

Новичок
Добрый день.

Есть две таблицы.
Первая - новости, вторая - комментарии.

Условно:
news
news_id | news_content | news_user

comments
comment_id | comment_content | news_id | comment_user


На странице категорий новостей необходимо выводить краткое описание новости, а также список комментариев к нему, скажем, последние 5.
Но делать это через цикл, слишком ресурсозатратно.
Каким образом можно сделать оптимальную выборку.
Буду рад хотя бы за направление.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Как ты выяснил, что это ресурсозатратно? Зачем занимаешься преждевременной оптимизацией?
 

kevmen

Новичок
Как ты выяснил, что это ресурсозатратно? Зачем занимаешься преждевременной оптимизацией?
Например: 20 новостей на странице, для каждой новости по 5 комментариев.
Один запрос для выборки всех новостей плюс джоином информация о пользователе.
Еще по одному запросу в каждом цикле для выборки комментариев + джоином информация о пользователе.
То есть первый цикл из двадцати шагов, плюс еще в каждом цикле по 5 шагов для обработки комментариев.
Получается немало. Я неправ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
У тебя структура не описывает задачу, там нет категорий.

Еще раз повторю свой вопрос. Как ты решил, что у тебя будет тормозить выборка, если ее написать как цикл по категориям, попутно выбирая новости по каждой из категорий и комментарии к новости? Гораздо страшнее не иметь нужных индексов на таблицах, чем получить лишние 20 запросов по индексу.

Есть такая штука как EXPLAIN, она тебе скажет какие индексы у тебя используются и как.

Если же тебя пугает количество выборок, то после "реализации в лоб" никто не мешает это кешировать.
 

artoodetoo

великий и ужасный
... а также список комментариев к нему, скажем, последние 5.
нигде не видел чтобы на ленте новостей были доступны по пять комментариев к новости. может я о чем-то другом думаю? или это новое слово в сайтостроении?
 

kevmen

Новичок
У тебя структура не описывает задачу, там нет категорий.

Еще раз повторю свой вопрос. Как ты решил, что у тебя будет тормозить выборка, если ее написать как цикл по категориям, попутно выбирая новости по каждой из категорий и комментарии к новости? Гораздо страшнее не иметь нужных индексов на таблицах, чем получить лишние 20 запросов по индексу.

Есть такая штука как EXPLAIN, она тебе скажет какие индексы у тебя используются и как.

Если же тебя пугает количество выборок, то после "реализации в лоб" никто не мешает это кешировать.
Я условно представил таблицы.
categories
cat_id(k) | cat_name

news
news_id(k) | news_conent | news_user | news_cat_id

users
user_id(k) | user_name

comments
comment_id(k) | comment_content | comment_news | comment_user

Ключи есть. Выборка новостей идет по ключу категории.
Никак не решил, тестов не производил, просто представил такую выборку. Мне она показалась не оптимальной.
Хочется изначально реализовать корректно. А не делать через одно место. Вот и нужен совет.
 

kevmen

Новичок
нигде не видел чтобы на ленте новостей были доступны по пять комментариев к новости. может я о чем-то другом думаю? или это новое слово в сайтостроении?
Какая разница. Новости это или фотографии, блог или видео, суть от этого не меняется. Важна сама реализация, подход в оптимизации и правильном написании запроса. Поэтому и пишу тут.
 

artoodetoo

великий и ужасный
Навправление тебе указать? Сделай рабочий образец. Потом будешь оптимизировать, если не передумаешь.
 
Сверху