Answers:
无论解决方案如何,您都需要在product_id上建立索引。
如果您在updated_at列上有一个索引,并且您所需要的只是获取您所声明的“特定产品”,那么我将这样做:
select *
from Prices
where product_id = ?
order by updated_at desc
limit 1
但是,如果我没有得到想要的结果,或者如果我需要获得许多产品的当前价格,那么我会尝试添加一个活动列,并在执行此操作时将除新价格之外的所有其他价格都设置为N更新价格,然后按照a_horse_with_no_name的建议创建一个处于活动状态的局部索引。我只会在需要时才去那里,因为它增加了将以前的价格行更新为不活动的复杂性,等等。
(product_id, updated_at)
-或上 的索引(product_id, updated_at DESC)
。不只是在 (updated_at)
。
where active
可能会更有助于检索最新产品。