скажем, у меня есть три таблицы (MySQL), одна для пользователей, одна для тегов и последняя для их объединения (отношение многие ко многим):
create table user_tag(
user_id int unsigned not null,
tag_id int unsigned not null,
primary_key (user_id, tag_id)
);
Я хочу выйти изБаза данных полный список пользователей (или, по крайней мере, многие из них) вместе с тегами, которые они связали.Я использую PHP как серверный язык для этого.
Итак, мой вопрос: лучше ли выполнить один SQL-запрос, извлекая всю информацию, например так:
select user.name, user.image, ..., tag.name from user, tag, user_tag
where user.user_id = user_tag.user_id and tag.tag_id = user_tag.tag_id;
или лучшевыполнить один первый запрос для пользователей, а затем получить их теги:
select user.name, user.image, ... from user;
, а затем для каждого пользователя:
select tag.name from tag, user_tag where tag.tag_id = user_tag.tag_id
and user_tag.user_id = $USERID;
Мне кажется, что второй вариант лучше, но я боюсь, что это можетслишком много запросов к базе данных (учтите, что это общий пример разработки, но этот шаблон может присутствовать несколько раз в базе данных с разными таблицами).
Что лучше?Плюсы и минусы?Другие способы?
Спасибо
PS: пожалуйста, не принимайте во внимание синтаксис SQL, я не проверял его на реальной базе данных, это всего лишь вопрос дизайна, спасибо