【问题标题】:gathering statistics on tables without indexes收集没有索引的表的统计信息
【发布时间】:2015-02-20 13:52:32
【问题描述】:

定期收集 Oracle 数据库中没有索引的表的统计信息是否有意义?我是从优化的角度问的。我假设总是对该表执行 FULL TABLE SCAN。

【问题讨论】:

  • 如果您使用的是 Oracle 11g 或更高版本,那么 Oracle 会自动为您收集统计信息...
  • 网络上有很多信息,所以我想用一个例子来解释一下。看我的回答。
  • 即使除了使用全表扫描没有其他选择,它也是值得的。想象一下,您将这个表与其他表连接起来,并归档结果。优化器可以选择嵌套循环,也可以选择散列连接。但是如果整个哈希表都适合 RAM,则哈希连接会更有效。和这里的统计数据。可能有助于估计哈希表的大小。
  • @Ben,我明白了。您正在谈论自动优化器统计数据集合。你在生产系统上使用它吗?我不这么认为。
  • 它不应该是你确保你的统计数据是最新的唯一方法@lalit,但你为什么使用自动统计收藏?

标签: oracle indexing table-statistics


【解决方案1】:

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

【讨论】:

  • 除了@Dave 所说的之外,还收集了其他信息,例如不同值的数量 (NDV)、数据的偏度(如果正在收集直方图)和高/低值。您可以为优化器提供的每一点帮助都不会浪费!
【解决方案2】:

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

优化器对最新统计信息了解得越多,它可以决定的执行计划就越好。

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

假设您被要求在晴天到达特定目的地。但是,不会向您提供地图和位置信息。现在,可能有 N 种方法可以到达目的地,但如果没有正确的信息,您可能会选择最糟糕的方法。如果您足够聪明,您可能会问路,现在您可以从这里开始收集统计数据。试想一下,如果您在开始旅程之前就已经有了整个计划,也就是说,如果您可以收集所有统计数据,那么您就可以制定出最好的计划。

UPDATE看到一条关于自动优化器统计数据收集的评论。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-13
    • 2013-12-07
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多