Всем привет. Вопрос к знатокам БД касательно производительности. Постараюсь изъясниться понятным языком.
Есть три таблицы: таблица с пользователями, таблица с заказами и таблица с элементами в корзине, каждая из которых относится к какому-то заказу. Соответственно, заказ связан с юзером по UserId, а элемент корзины связан с заказом через OrderId.
У заказа есть несколько предопределённых статусов. Т.е. у пользователя есть много заказов, но в один момент времени он работает только с одним заказом. Для этого есть ещё у юзера такое поле, как CurrentOrderId, чтобы быстро отследить текущий заказ вместо постоянной выборки, типа SELECT Id FROM orders WHERE UserID = target AND Status = 'New'.
Задача стоит в следующем: необходимо достать информацию о заказе имея только UserId. Я вижу два способа это сделать:
Сделать выборку с использованием INNER JOIN.
SELECT o.Id, o.CompanyId, o.TotalPrice, o.Status, COUNT(*) as ItemCount
FROM orders as o
INNER JOIN users as u ON o.Id = u.CurrentOrderId
INNER JOIN cartitems as i ON o.Id = i.OrderID
WHERE u.Id = ?
Сначала достать запись юзера:
SELECT CurrentOrderId FROM users WHERE Id = ?
А затем имея на руках CurrentOrderId просто достать нужную мне инфу про заказ без лишнего объединения с таблицей users:
SELECT o.Id, o.CompanyId, o.TotalPrice, o.Status, COUNT(*) as ItemCount
FROM orders as o
INNER JOIN cartitems as i ON o.Id = i.OrderID
WHERE o.Id = ?
Вопрос заключается в следующем. Какой из вариантов будет быстрее работать при больших размерах таблиц. Просто закралась мысль, что лишнее объединение при больших объёмах данных будет работать дольше, чем два запроса.
Надеюсь на помощь. Заранее спасибо.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравия прочитавшим!
Всем привет!Мне нужно сделать чтоб при выполнении определённого условия,загружался("включался" определённый java файл(класс))Как можно реализовать...
Стандартное направление recyclerview это сверху-внизТ