收集没有索引的表的统计信息
gathering statistics on tables without indexes
在 Oracle 数据库中没有索引的情况下定期收集 table 的统计信息是否有意义?我是从优化的角度问的。我假设总是在 table.
上执行 FULL TABLE SCAN
是的,仍然值得收集统计数据。有关行数和行大小的信息对优化器有用,即使没有索引
简而言之,统计数据对优化器的重要性就像食物对人类一样重要。如果长时间不吃东西,大脑的功能就会退化。
优化器知道的最新统计信息越多,它能决定的执行计划就越好。
让我试着用一个例子来解释:
假设您被要求在晴天到达特定目的地。但是,您不会获得地图和位置信息。现在,可能有 N 种方法可以到达目的地,但如果没有适当的信息,您可能会选择最糟糕的方法。如果你足够聪明,你可能会问路,现在这是你开始收集统计数据的地方。试想一下,如果您在开始旅程之前考虑了整个计划,即如果您可以收集所有统计数据,您就可以制定最佳计划。
更新 看到关于自动优化器统计数据收集的评论。
是的,Oracle 11g Release 1
中当然有 自动优化器统计信息收集。请查看更多信息here
在 Oracle 数据库中没有索引的情况下定期收集 table 的统计信息是否有意义?我是从优化的角度问的。我假设总是在 table.
上执行 FULL TABLE SCAN是的,仍然值得收集统计数据。有关行数和行大小的信息对优化器有用,即使没有索引
简而言之,统计数据对优化器的重要性就像食物对人类一样重要。如果长时间不吃东西,大脑的功能就会退化。
优化器知道的最新统计信息越多,它能决定的执行计划就越好。
让我试着用一个例子来解释:
假设您被要求在晴天到达特定目的地。但是,您不会获得地图和位置信息。现在,可能有 N 种方法可以到达目的地,但如果没有适当的信息,您可能会选择最糟糕的方法。如果你足够聪明,你可能会问路,现在这是你开始收集统计数据的地方。试想一下,如果您在开始旅程之前考虑了整个计划,即如果您可以收集所有统计数据,您就可以制定最佳计划。
更新 看到关于自动优化器统计数据收集的评论。
是的,Oracle 11g Release 1
中当然有 自动优化器统计信息收集。请查看更多信息here