暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 用于基数计算的压缩索引中的数据索引?

askTom 2018-04-11
132

问题描述

我一直想知道为什么Oracle 11不遵循基于成本的优化器的子查询执行计划。
它选择其他索引执行,这会导致性能非常慢的34m行表。表在七周内有900 000行。

当查询始终以最新行为目标并应选择日期作为第一列 (位置为第二列) 时,存在问题。稍后下一次很快,它最终以位置作为第一列选择索引。
在查询中,where部分中有8到10个字段,其中包含3到5个谓词。几百个地点。

到目前为止,我们已经更新了统计信息以修复索引选择。

我相信问题是在没有直方图和日期作为主要字段的新行中。

我不知道统计信息在正常使用情况下更新的频率。预定的oracles自己的自动化未打开。

我的问题是:

是否相同 (日期为第一列) 压缩索引删除需要更新到直方图?Oracle可以使用压缩索引中的数据索引进行基数计算,但是它会这样做吗?

要做到这一点,数据库将需要保持数据索引的重复条目在压缩索引内,以获得精确的基数非常快,没有直方图。

如果基数计算目前没有像这个问题所建议的那样受到影响,那么这将是改进的建议。

专家解答

Seven weeks获取900k行?!真的吗?我认为你有比优化器选择错误索引更严重的错误...

无论如何,压缩索引并不能消除对直方图的需求。

直方图是为了帮助数据库识别值的不均匀分布
压缩 (可以) 通过删除重复的值来减小索引的大小

我不确定在压缩索引中存储重复值的计数如何使直方图变得多余。

优化器选择计划before访问查询中的任何对象。这是基于统计数据。比如直方图。

要在索引中使用基数计数,数据库将 (可能) 必须转到查询中所有表的所有索引。那是很多浪费的努力。特别是如果净结果是全表扫描是最好的方法!
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论