我有一个55Gb事实表,在其中我必须删除一些记录,以后可以将其还原。删除的记录数在10到10万之间。
目前,我的删除策略基于以下内容: 我更新了要删除的记录的dateKey,例如从正数int 20080122到负数int -20080122,以便当前日期过滤器不包括它。
我的想法是,不是将数据移出事实表,而是将日期移出过滤器日期范围,然后通过使用dateKey上的更新将其移回可过滤的日期范围。
我想听听您对这种删除策略的看法,尤其是关于NCI(非聚集索引)行为的看法。您认为更新索引的dateKey优于移动实际数据吗?
答案 0 :(得分:0)
我们的标准做法是不重新使用dateKey
列,而是在表中添加“软删除”列,即“ is_deleted”位列或“ deleted_on”日期时间列,然后使用该列过滤掉“已删除”的行。
这需要您做更多的工作,因为必须修改所有现有查询才能使用此新列,但是现在您的数据库不必进行重新索引或删除/插入实际数据的工作。