Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте. Такое дело:
Существуют статьи и сущ. темы, на которые эти статьи могут быть (одной статье может быть сопоставлено несколько тем). Есть таблица тем (A): ид темы и название темы (темы, допустим, такие: музыка, спорт, наука и тп). Есть таблица (B): ид статьи и ид темы -- сопоставление статей и тем. Вот задача: у меня есть ид статьи, мне нужно узнать названия всех тем, которых касается эта статья.
К примеру: A состоит из theme_id, theme_name ; B состоит из theme_id, article_id
Можно делать так: с помощью JOIN присоединить таблицу A к таблице B, затем с помощью WHERE выбрать записи, где ид статьи тот, который нас интересует.
допустим,речь идет о статье с ид=5:
SELECT A.theme_name FROM A RIGHT JOIN B on A.theme_id=B.theme_id WHERE B.article_id=5
А можно так: используя промежуточный запрос выделить с помощью WHERE из таблицы B те записи , где ид статьи тот, который нас интересует, а затем с помощью JOIN присоединить к промежуточному результату таблицу A.
SELECT A.theme_name FROM (SELECT theme_id FROM B WHERE article_id=5) as actual_themes LEFT JOIN A ON actual_themes.theme_id=A.theme_id
Вопрос: есть ли принципиальные отличия в быстроте выполнения этих запросов.
Неактивен
А сравнить EXPLAIN и скорость не пробовали?
Предположительно первый вариант будет работать чуть-чуть быстрее (из-за того, что не нужно
материализовывать вот эту вот выбранную строку).
Неактивен