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

在 Oracle 数据库中,关于索引的描述,下列哪一项是正确的?

原创 小伙 2025-04-11
246

A

唯一索引允许表中存在多个 NULL 值,而普通索引不允许 NULL 值。

B

当在一个大表上创建索引后,对于经常使用在 WHERE 子句中的列进行筛选查询,会提高查询的性能,但对于更新、插入和删除操作可能会产生性能开销。

C

索引会自动更新,无论对表进行何种操作,都不会影响索引的性能。

D

为表创建的索引越多越好,因为可以显著提高查询性能。

选项 D 正确  

描述:当在一个大表上创建索引后,对于经常使用在 WHERE 子句中的列进行筛选查询,会提高查询的性能,但对于更新、插入和删除操作可能会产生性能开销。

依据

  1. 查询性能提升
    索引的核心作用是加速查询,尤其是针对 WHERE 子句中频繁使用的列。通过索引可以直接定位到符合条件的行,减少全表扫描的 I/O 开销。
    • 例如,在包含百万行数据的表中,使用索引可将查询复杂度从 O(n) 降低至 O(log n)。

  2. DML 操作的开销
    索引虽然优化了查询,但会额外增加插入、更新和删除操作的成本。因为每次数据变更时,Oracle 需要同步维护索引结构,导致额外的磁盘 I/O 和锁竞争。
    • 例如,网页提到:“索引不是越多越好,特别是大量不用的索引会增加维护成本,降低更新性能。”


其他选项错误原因

选项 A

错误:索引会自动更新,但并非“不会影响性能”。
• 索引的自动维护(如插入、删除时的更新)会产生性能开销,尤其是高频 DML 操作时。

选项 B

错误:索引越多不一定越好。
• 过多的索引会显著增加存储空间占用和 DML 操作的开销。Oracle 官方建议 OLTP 系统每表不超过 5 个索引。

选项 C

错误:唯一索引和普通索引对 NULL 值的处理不同。
• 唯一索引允许多个 NULL 值,因为 Oracle 认为 NULL 是“未知值”,不违反唯一性约束。
• 普通索引也允许 NULL 值,但 NULL 值不会被存储到索引结构中(除非是位图索引)。


总结

• 正确选项:D
• 核心知识点
• 索引通过减少全表扫描显著提高查询效率,但会增加 DML 操作的开销。
• 唯一索引允许多个 NULL 值,普通索引也允许 NULL 值。
• 索引的维护需要权衡查询性能与更新成本,避免过度使用。

如需进一步优化索引策略,可参考 Oracle 的统计信息收集(DBMS_STATS)和自动索引功能(Oracle 19c 支持自动索引管理)。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论