【发布时间】:2020-07-09 15:52:22
【问题描述】:
我有两张桌子:
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;
是否不应该从第一个表中返回数据,无论第二个表中是否有任何匹配记录?我做错了什么?
【问题讨论】:
标签: sql postgresql select left-join