【发布时间】:2014-08-04 18:21:23
【问题描述】:
我在 Vertica 表中有十亿条记录,timestamp 数据类型为 timestamptz。我想在一个语句中删除超过 90 天的记录。我该怎么做?
【问题讨论】:
我在 Vertica 表中有十亿条记录,timestamp 数据类型为 timestamptz。我想在一个语句中删除超过 90 天的记录。我该怎么做?
【问题讨论】:
最佳做法是将日期明确定义为查询的一部分:
DELETE FROM [schema].table WHERE times_stamp <= '2014-05-06';
但是,您可以使用以下方法动态完成此操作:
DELETE FROM [schema].table WHERE DATEDIFF(day, times_stamp, SYSDATE()) >= 90;
这将删除日差大于或等于 90 的行。
我建议在删除这些行之前使用该谓词执行SELECT,以验证被删除的行以及使用事务。
考虑将来使用分区,因为删除行的成本很高(需要重新组织容器)。例如,如果您按月分区,您将能够立即删除这些容器。
【讨论】: