gpt4 book ai didi

sql - 具有行版本控制的 PostgreSQL 数据库

转载 作者:行者123 更新时间:2023-11-29 14:07:11 24 4
gpt4 key购买 nike

只是想从对 StackOverflow 社区表达爱意开始:)

所以我有一个 Postgres 数据库表,但让我们减少重要的列:

id (string/int), when (timestamp/time/date), canonical (boolean)

Canonical 在这种情况下表示“接受版本历史的一部分”。

假设我们的表是这样的:

2, 2003-01-08, true
2, 2002-01-08, false
1, 2001-01-08, false
3, 2000-01-08, false
2, 2000-01-08, true
1, 2000-01-08, true
1, 1999-01-08, true

我想要一个查询来查找每个 ID 的最新规范版本。结果应如下所示:

2, 2003-01-08, true
1, 2000-01-08, true

所以我想有两个问题:

  1. 您将如何为此编写查询?
  2. 可以编入索引吗?

一个更大、更元的问题是,是否有更好的方法来处理存储此类信息。

最佳答案

select distinct on (id) *
from t
where canonical
order by id, "when" desc

此查询的最佳索引是部分索引

create index index_name on t (id, "when" desc) where canonical;

http://www.postgresql.org/docs/current/static/sql-createindex.html

关于sql - 具有行版本控制的 PostgreSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23893936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com