Задать вопрос
gene4000
@gene4000

Что лучше — один запрос с двумя JOIN или три запроса?

При программировании на PHP возник вопрос: лучше сделать более полный запрос, чтобы сразу получить все данные из трех таблиц или сделать три разных запроса?
В первом запросе по дате выбирается информация содержащая два идентификатора, по которым вытаскиваются подробные данные соответствующие этим идентификаторам.
То есть в одном запросе в возвращаемых данных может дублироваться информация (в разных строках часть данных соответствующая идентификатору может повторяться).
Запрос вряд ли будет возвращать больше сотни строк, скорее всего до двадцати. Есть ли заметная разница в производительности, если делать три запроса?

Упрощенно структура:
t1 [ time, t2_id, t3_id ]
t2 [ t2_id, t2_info ]
t3 [ t3_id, t3_info ]
  • Вопрос задан
  • 739 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Stepik
    PHP (pro)
    2 недели
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
Пригласить эксперта
Ответы на вопрос 4
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Если таблицы условно большие ( > 1 000 000), а в результатах запроса ожидается мало данных ( < 1 000 ) заметно быстрее будет делать 3 запроса вида where id in (1,2,3) явно перечисляя в запросах нужные id
Ответ написан
iam_not_a_robot
@iam_not_a_robot
По разному может быть, надо измерять в каждом конкретном случае отдельно.
Ответ написан
@dmitryKovalskiy
программист средней руки
При малом количестве строк лучше JOIN. Тут есть еще другой вопрос - если вы за каждым запросом будете создавать соединение с базой и потом отключение - возникнут просто баластные операции, которых можно избежать как 2 пальца.
Ответ написан
В общем случае лучше один. Начинать нужно с него. Когда он начнёт тормозить, то только тогда начинать профилировать, смотреть планы запросов и начинать оптимизировать. Преждевременная оптимизация - зло.
Ответ написан
Ваш ответ на вопрос

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

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