该表看起来像这样,它是 SCD 类型 2:
+-----------+------------------+------------------------+
| id (text) | version (serial) | created_at (timestamp) |
+-----------+------------------+------------------------+
Run Code Online (Sandbox Code Playgroud)
对于 99% 的查询,我们将搜索整个表并按附加列和连接表进行过滤。对于这些查询,我们只对每个唯一 ID 的记录的最新版本感兴趣。我们还将按created_at和其他列进行排序。
为了方便查找最新记录,我正在考虑添加一most_recent (boolean)
列,如此处答案中所述:
然而我意识到我们已经有了created_at
告诉我们这些信息的列 - 我们可以在搜索查询中使用 DISTINCT 子句并按创建日期排序,如 @Svet 的答案所述:
但是,我们随后必须按我们实际想要用来显示数据的列对结果重新排序。
从长远来看,添加额外的“当前”字段似乎更简单,并且性能会更高,但这也是不好的做法吗?