我想删除所有超过24小时的记录。我使用以下查询相同,但有时并不完美。我想知道我的查询是对还是错?或者哪种方式更好。
delete from TEMP_SERVICE_OPTION where EVENT_DATE < TRUNC(SYSDATE) - 1;
答案 0 :(得分:10)
如果您想要 24小时,请执行以下操作:
where event_date < sysdate - 1
如果您想在昨天之前 ,请执行以下操作:
where event_date < trunc(sysdate) - 1
至于性能,这取决于要删除的行数。如果你的表只有几千行,那么这很好。如果它有数百万行,那么您可能需要event_date
上的索引。或者,您甚至可能希望采用不同的方法 - 将数据选择到临时表中,截断原始表,然后重新插入。
答案 1 :(得分:1)
您的查询正在删除昨天之前EVENT_DATE
所在的记录。
如果要删除超过24小时的记录,请尝试:
delete from TEMP_SERVICE_OPTION where (SYSDATE - EVENT_DATE) > 1;