索引标记为已删除的项目

时间:2013-09-20 11:42:56

标签: sql postgresql search indexing

由于客户要求,我需要实施以下方案:
每当用户想要删除表示文档的记录时,需要使用简单的BOOLEAN is_deleted条件将该特定记录标记为已删除。

凭证是存储发票,订单或要约的其中一个表的通用名称。

一切都很简单,但我想知道是否有一种方法可以对记录进行索引以执行快速搜索,并以某种方式跳过/省略已删除的项目(或者根本不需要担心性能并使用简单的where子句{{ 1}})。

其他解决方案/建议也将受到赞赏。

2 个答案:

答案 0 :(得分:1)

PostgreSQL支持部分索引。你可以这样做:

create index document_id_is_deleted_idx ON document(id) where is_deleted;

如果您需要对数据的某些部分使用唯一的子集,您甚至可以创建唯一索引。

当然,在索引中获取正确的列是一项练习,但它非常容易管理。

答案 1 :(得分:0)

您可能想要探索的另一个选项是将这些记录移动到另一个表,或者使用分区来分隔已删除和未删除的行(这些行大致相同)。

这样您就可以将所有感兴趣的记录保存在一个较小的表中,该表可以与已删除记录的索引不同。

如果您沿着分区路线走下去,那么您将拥有一份DOCUMENTS主表,其中包含DOCUMENTS_DELETED和DOCUMENTS_LIVE表。

相关问题