atis2345
@atis2345
PHP developer

Как лучше тянуть теги к постам, в одном запросе или множестве?

Здарова всем)

Стандартная ситуация. Посты + теги к ним. Ищу наиболее оптимальный вариант выбора тегов.
Пока варианта 2.

1. Тянуть все одним запросом и преобразовывать в JSON в самом SQL запросе( CONCAT + GROUP_CONCAT ).
2. Тянуть теги для поста в цикле.

В общем - нужны идеи)
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
mitaichik
@mitaichik
Тут масса вариантов:

Можно тянуть одним запросом с JOIN.

Можете сделать 2 запроса: 1ая выборка постов, потом собираем id постов и по ним вторым запросом выбираем теги. В принципе, релейшены в yii по умолчанию так и работают (кстати, может воспользоваться ими?)

В варианте с group_concat учтите что он по умолчанию ограничен в длине результирующей строки. Ошибки запроса не будет, он просто обрежет строку тегов.

Если нет какой-то сложной работы с тегами (например, сбор статистики) то можно вообще их сохранять в таблице постов в каком-либо виде (например, разделенных пробелом или в json массиве)

В цикле - совсем плохая идея, но... В принципе абсолютно не важно как вы сделаете - главное чтоб производительности хватало. Если будете делать заведомо долгий вариант (как запрос в цикле). то есть, скорее всего, рано или поздно придется переделывать, то важно сделать в коде какой-либо абстрактный способ получения тегов у поста , например, $post->getTags() и использовать его, что бы при переделке способа получения тегов не пришлось переписывать код где они используются.

Лично я бы сохранял в таблице поста, или юзал релейшены...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы