暂无图片
返回数说广场
锁钥
暂无图片
2024-06-28 技术支持、培训,喜欢分享、折腾的DBA
以下哪些情况容易导致当前步骤预估行数与实际行数差异过大?(ABCD) A、统计信息与实际差异过大 B、表连接的连接列或条件列存在函数列 C、存在count stopkey的SQL根据排序列顺序采用了索引全扫或降序扫描 D、条件列包含双%、多列条件相互间存在关联性或直方图等 解析: A 当Oracle数据库的统计信息(如行数、列的唯一值数量、列的分布等)与实际数据分布存在较大差异时,优化器在生成执行计划时可能会基于不准确的数据来预估行数,从而导致预估行数与实际行数差异过大。 B 如果在表连接的连接列或条件列上使用了函数(如UPPER()、LOWER()、TRUNC()等),这可能会改变列上的索引使用情况,因为索引通常不适用于经过函数处理的列。这可能导致优化器在预估行数时无法准确估计,因为它可能无法考虑到函数对列值的影响。 C `count stopkey`通常与查询的停止条件相关。如果查询确实因为使用了某种特定的扫描方式(如索引全扫或降序扫描)而导致性能问题,这可能会间接影响预估行数的准确性,特别是当这些扫描方式与数据的实际分布或统计信息不一致时。 D 当查询条件包含通配符(如`LIKE '%value%'`),特别是双通配符(即`%`在值的前后都出现),这可能会使索引变得无效,因为Oracle需要扫描更多的行来找到匹配项。此外,如果多个条件列之间存在关联性,但统计信息没有准确地反映出这种关联性,那么优化器在预估行数时可能会出现偏差。直方图可以提供关于列值分布的更多信息,但如果直方图没有更新或不准确,也可能导致预估行数的不准确。
0
暂无图片 1
207
分享

评论

热门数说