小编Hen*_*nry的帖子

除了“create_at”时间戳列之外,使用“most_recent”布尔列来跟踪记录的最新版本是不是不好的做法?

该表看起来像这样,它是 SCD 类型 2:

+-----------+------------------+------------------------+
| id (text) | version (serial) | created_at (timestamp) |
+-----------+------------------+------------------------+
Run Code Online (Sandbox Code Playgroud)

对于 99% 的查询,我们将搜索整个表并按附加列和连接表进行过滤。对于这些查询,我们只对每个唯一 ID 的记录的最新版本感兴趣。我们还将按created_at和其他列进行排序。

为了方便查找最新记录,我正在考虑添加一most_recent (boolean)列,如此处答案中所述:

/sf/ask/2414683561/#34495621

然而我意识到我们已经有了created_at告诉我们这些信息的列 - 我们可以在搜索查询中使用 DISTINCT 子句并按创建日期排序,如 @Svet 的答案所述:

/sf/ask/1212893041/

但是,我们随后必须按我们实际想要用来显示数据的列对结果重新排序。

从长远来看,添加额外的“当前”字段似乎更简单,并且性能会更高,但这也是不好的做法吗?

best-practices sorting data-versioning

11
推荐指数
3
解决办法
2955
查看次数

标签 统计

best-practices ×1

data-versioning ×1

sorting ×1