首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从表中获取最后一行的最快方法是什么?

从表中获取最后一行的最快方法是什么?
EN

Database Administration用户
提问于 2014-02-16 07:49:14
回答 2查看 44.7K关注 0票数 14

我有一个PostgreSQL表,Prices,包含以下列:

  • price (十进制)
  • product_id (Int)

还有created_atupdated_at列。

价格定期更新,我把旧的价格放在桌子上。对于给定的产品,表中的最后一个价格是当前价格。

获得某一特定产品最后价格的最有效方法是什么:

  • 索引product_id和查询上一条记录
  • 添加第三列active (布尔值)以标记最新价格,并创建一个复合索引(product_idactive)
  • 还是别的什么?
EN

回答 2

Database Administration用户

回答已采纳

发布于 2014-02-16 22:54:06

无论解决方案如何,都需要product_id上的索引。

如果您在updated_at列上有一个索引,并且您只需要像您所说的那样获取“特定产品”,那么我将这样做:

代码语言:javascript
代码运行次数:0
运行
复制
select *
from Prices
where product_id = ?
order by updated_at desc 
limit 1

但是,如果我没有得到我想要的结果,或者如果我需要得到许多产品的当前价格,那么我将尝试添加一个活动列,并在更新价格时将它设置为除新的价格之外的所有价格的N,然后按照a_horse_with_no_name的建议创建一个活动的部分索引。我会去那里,只有当我需要,因为它增加了一个层的复杂性,更新以前的价格行,以不活动,等等。

票数 14
EN

Database Administration用户

发布于 2020-05-08 02:58:25

您确实应该在价目表中有一列wef日期和时间(自开始生效)。用户将在更新价格时输入其值。在此之后,使用desc wef限制1只获取值。

票数 -1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/59000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档