收集没有索引的表的统计信息

gathering statistics on tables without indexes

在 Oracle 数据库中没有索引的情况下定期收集 table 的统计信息是否有意义?我是从优化的角度问的。我假设总是在 table.

上执行 FULL TABLE SCAN

是的,仍然值得收集统计数据。有关行数和行大小的信息对优化器有用,即使没有索引

简而言之,统计数据优化器的重要性就像食物对人类一样重要。如果长时间不吃东西,大脑的功能就会退化。

优化器知道的最新统计信息越多,它能决定的执行计划就越好。

让我试着用一个例子来解释:

假设您被要求在晴天到达特定目的地。但是,您不会获得地图和位置信息。现在,可能有 N 种方法可以到达目的地,但如果没有适当的信息,您可能会选择最糟糕的方法。如果你足够聪明,你可能会问路,现在这是你开始收集统计数据的地方。试想一下,如果您在开始旅程之前考虑了整个计划,即如果您可以收集所有统计数据,您就可以制定最佳计划。

更新 看到关于自动优化器统计数据收集的评论。

是的,Oracle 11g Release 1 中当然有 自动优化器统计信息收集。请查看更多信息here