Gather_table_stats 始终更新统计数据

Gather_table_stats always updates stats

在 ODI 中,我们使用 DBMS_STATS.GATHER_SCHEMA_STATS 仅当 table 通过选项(选项 => 'GATHER AUTO')改变了一定百分比时才重新计算统计数据。 (http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_stats.htm#i1036456)

现在我想将统计数据的计算移动到 table 级别(在 IKL 中),但是 DBMS_STATS.GATHER_TABLE_STATS 似乎没有设置只在需要更新时才重新计算统计数据(由 Oracle 确定)。 (http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_stats.htm#i1036461)

总是重新计算我们所有 table 的统计数据太昂贵了。

有谁知道检查 table 是否需要更新其统计信息或 DBMS_STATS.GATHER_TABLE_STATS 中的隐藏选项的方法。

DBMS_STATS.GATHER_SCHEMA_STATS 有一个 LIST STALE 对象的选项;您可以先 运行 然后确定您的 table 是否在返回对象列表中。

从 USER_TAB_STATISTICS / ALL_TAB_STATISTICS / DBA_TAB_STATISTICS

检查第 STALE_STATS 列