gene4000
@gene4000

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

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

Упрощенно структура:
t1 [ time, t2_id, t3_id ]
t2 [ t2_id, t2_info ]
t3 [ t3_id, t3_info ]
  • Вопрос задан
  • 720 просмотров
Пригласить эксперта
Ответы на вопрос 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 пальца.
Ответ написан
В общем случае лучше один. Начинать нужно с него. Когда он начнёт тормозить, то только тогда начинать профилировать, смотреть планы запросов и начинать оптимизировать. Преждевременная оптимизация - зло.
Ответ написан
Ваш ответ на вопрос

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

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