У меня есть две таблицы:
products(id: integer, price: float, website_id: integer)
и
adjustments(id: integer, product_id: integer, website_id: integer, factor:float)
У меня есть индексы по id в обеих таблицах, а также индексы website_id и product_id в таблице корректировок.
Этот запрос возвращает данные, но он занимает около 5 секунд с некоторыми продуктами 1k и несколькими сотнями корректировок:
select
products.id,
case
when adjustments.website_id = 1
then
products.price+coalesce(adjstments.factor,0)
else
products.price
end as price
from
products
left join
adjustments on products.id = adjustments.product_id
where
products.website_id = 1;
Однако этот другой запрос не возвращает результатов, если в таблице корректировок ничего нет:
select
products.id,
products.price+coalesce(adjstments.factor,0) as price
from
products
left join
adjustments on products.id = adjustments.product_id
where
products.website_id = 1 and adjustments.website_id = 1;
Разве не предполагалось возвращать данные из первой таблицы, независимо от того, есть ли какие-либо подходящие записи во 2-й таблице? Что я делаю не так?