【发布时间】:2026-01-01 16:30:01
【问题描述】:
我需要知道在 Oracle 上定期运行查询的最佳做法是什么(我使用的是 11g)。
在我的特定用例中,我在表 x 中指定了一个 DUE_DATE。我想要做的是每天 00:01 运行查询以计算某些记录的状态(OK、Warn、Critical 或 Overdue)。特定记录的状态是根据相对于x.DUE_DATE 的今天日期(其中“今天”是运行查询的日期)和一些用户指定的值(表示“警告”和“关键”)计算得出的(包含在表中y)。
- 好的 -->
today < x.DUE_DATE - y.WARN - 警告 -->
today >= x.DUE_DATE - y.WARN and today < x.DUE_DATE - y.CRITICAL - 严重 -->
today >= x.DUE_DATE - y.CRITICAL and today <= x.DUE_DATE - 过期 -->
today > x.DUE_DATE
定期运行此查询的最佳方式是什么?我找到了以下选项,但不确定哪个最适合我的用例:
我知道我可以根据每个用户请求动态计算状态,但由于状态每天只更改一次,我认为每天进行一次计算并缓存后续结果会更有效。
非常感谢。
【问题讨论】: