下面是对 SQL2314W 的说明:某些统计信息处于不一致的状态。最近收集的 对象-1 统计信息与现有的 对象-2 统计信息不一致。说明查询优化器使用统计信息来确定查询的最佳存取方案。当存在不一致的统计信息时,如果有一致的统计信息集可用,那么优化器将使用不正确的信息执行存...
显示全部下面是对 SQL2314W 的说明:
某些统计信息处于不一致的状态。最近收集的 对象-1 统计信息与现有的 对象-2 统计信息不一致。
说明
查询优化器使用统计信息来确定查询的最佳存取方案。当存在不一致的统计信息时,如果有一致的统计信息集可用,那么优化器将使用不正确的信息执行存取方案求值。这可能会产生一个欠佳的存取方案。
导致此警告的可能原因包括下列各项。
如果仅对表发出 RUNSTATS,就可能会导致表级别统计信息与现有索引级别统计信息不一致的情况。同样,如果仅对索引发出 RUNSTATS 或者在索引创建期间发出 RUNSTATS,就可能会使表级别统计信息处于不一致状态。例如,如果在特定表上收集了索引级别统计信息,后来从此表中删除了大量行,那么对该表发出 RUNSTATS 只可能会导致表基数小于 FIRSTKEYCARD,这是一种不一致状态。
当并发执行许多插入、更新或删除操作时,如果发出指定了 ALLOW WRITE ACCESS 选项的 RUNSTATS,就有可能会因为在收集表统计信息与收集索引统计信息之间对表进行了更改而导致不一致情况。
如果发出指定了 TABLESAMPLE 选项的 RUNSTATS,那么过低的采样大小可能会导致不准确地推断统计信息,从而导致不一致情况。与 BERNOULLI 采样相比,SYSTEM 采样进行不准确地推断的机会较高。
用户响应
找出不一致的原因,然后再次收集统计信息以解决不一致问题。
发出 RUNSTATS 以同时收集表级别统计信息和索引级别统计信息。
在执行的插入、更新和删除操作量最低时或者完全未执行这些操作时收集统计信息。或者,如果并发插入、更新和删除操作不是必需的,那么发出指定了 ALLOW READ ACCESS 选项的 RUNSTATS。
增大采样大小,或者,如果发出指定了 TABLESAMPLE SYSTEM 的 RUNSTATS,那么改为使用 TABLESAMPLE BERNOULLI 选项。
收起