gpt4 book ai didi

database - Oracle直方图和读取错误索引

转载 作者:搜寻专家 更新时间:2023-10-30 23:34:45 26 4
gpt4 key购买 nike

我有 2 个数据库,一个是许多用户使用的主数据库和一个测试数据库,第二个是测试数据库,由主数据库的 dump 加载。

我在包含 4000 万行的表 TAB11 上有一个带有连接条件和 union all 的选择查询。

查询在 main DB 中读取错误索引但在 test DB 中读取正确索引的问题。请注意,两者都有关于表的最新收集统计信息和相同的计数行。我开始深入研究直方图和倾斜数据,我注意到在主数据库中,该表在其列上创建了 37 个直方图,但是在测试数据库中,该表只有 14 列有直方图。所以显然那些创建的直方图正在影响查询计划以读取错误的索引(对吗?)。 (那些由 oracle 创建的直方图,而不是由任何人创建的)

我的问题:

-我是否应该从这些列中删除直方图,当我再次收集静态数据时,oracle 将创建所需的直方图并正确读取它们?但我担心它会影响表的性能。

-我应该在收集选项卡统计信息时添加这个 method_opt=>'for all columns size skewonly' 但我不确定数据是否倾斜。

-我应该在所需的索引上运行 gather index stats 并且 oracle 可能会读取它吗?

如何让查询读取正确的索引,而不删除它或使用强制索引?

最佳答案

在一个数据库和另一个数据库中选择不同索引的可能原因太多(包括对象生命周期差异,例如数据加载时、删除/截断/插入/统计收集索引重建......)。话虽如此,在这种情况下,我通常会对每个数据库的初始化参数进行逐个参数比较;也是一个逐个对象的比较(您已经在直方图中观察到一个增量;您可能还有其他人正在影响它)。

关于database - Oracle直方图和读取错误索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44541081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com