对于单个给定的product_id
:
SELECT *
FROM product p
JOIN productfee f ON f.valid_from <= p.date
WHERE p.product_id = 2
ORDER BY f.valid_from DESC
LIMIT 1;
如果表的大小不重要,则最好至少具有以下索引:
CREATE INDEX ON product (product_id, date);
CREATE INDEX ON productfee (valid_from DESC);
如果valid_from
可以为NULL
,请考虑NULLS LAST
。参见:
显然,您将使用正确的date
或timestamp
类型,而不仅仅是月份名称。