Oracle 和 DB2,比较与兼容性/存储模型/索引
外观
索引是性能结构。通常,索引可以加快对数据的访问速度。索引的工作原理类似于目录——它以一种可以快速找到所需条目的方式进行组织。索引的作用对象是表中列的内容。当您使用索引时,数据库将扫描排序的索引以定位您需要的数据。如果您有多个索引,它实际上可能会影响数据库性能,因为每次数据发生变化(插入、更新和删除)时都需要维护每个索引。仅仅因为索引是一件好事,就像生活中任何事物一样,它们也会物极必反;您可能会拥有过多好事。
在某些情况下,索引可能不是访问数据的最快方法。如果您的表非常小,读取整个表以获取所需的条目比先读取索引然后读取数据更快。如果它是基于成本的优化器的任务来决定是否使用索引。如果您确信您想要查询使用特定索引,您可以使用提示覆盖优化器。
Oracle 和 DB2 都具有唯一索引、非唯一索引和复合索引,并且以几乎相同的方式处理它们。两者都使用平衡的 B 树索引来提供对表中任何行的平等访问。B 树针对读取和写入大量数据块的系统(即数据库和文件系统)进行了优化。B 树是一种树状数据结构,它保持数据的排序,并允许搜索、顺序访问、插入和删除。B 树通过要求所有叶节点都处于相同的深度来保持平衡。随着元素添加到树中,该深度会增加,但整体深度不会增加太多。
唯一索引保证索引中没有两列具有相同的值。为每个表的每个主键自动创建唯一索引。这确保每行都有一个唯一的标识符。
非唯一索引允许索引中的列具有相同的值。一个简单的例子是,在姓氏上创建索引。然后,您可以访问所有姓氏为“Smith”的人。
复合索引由多个列组成。这在表中的两个列经常一起访问时很有用。
以下关于 Oracle 和 DB2 的部分涵盖了它们如何以不同的方式处理索引。摘要包含了每个 DBMS 如何处理聚簇的概述,在大多数情况下,这取决于索引。