связанные между собой данные.
Самый простой пример: есть продукт с айди, названием, и айди пользователя. У пользователя есть имя. Необходимо вывести список продуктов в виде названое продукта - имя продавца.
Есть два очевидных варианта - делать джоин по юзер айди, либо же денонмализировать и хранить имя пользователя в таблице продуктов (понятно что в этом примере это не совсем уместно, но допустим что у нас много джоинов происходит)
И есть третий вариант, который я недавно услышал: сначала делать запрос на список продуктов, потом из этого списка выбрать айдишники пользователей и сделать второй запрос с этим списком айди на получение пользователей
Насколько третий вариант хорош, и какие могут быть с ним проблемы?
Мне кажется, до возникновения существенной потребности оптимизации конкретных запросов (в ущерб другим, естественно) даже на вариант с "денормализацией" смотреть не стоит. А какие в третьем варианте вообще есть реальные преимущества (с виду, он просто хуже JOIN-ов, нет)?
Обсуждают сегодня