1

这个问题几乎总结了这一点,但我会提供更多细节。

几乎可以安全地假设 Oracle 数据库中的任何主键索引都是集群的。但我不是一个假设。此外,用户可能创建了一个不是主键的聚集索引。如果是这样的话,我真的很想知道。

因此,为了真正彻底,我想记住(不是我忘记或任何事情),如何从 Oracle 元数据中确定索引是否是集群的。

(而且,像往常一样,谷歌就像在垃圾填埋场扎根,寻找你妈妈读过的老式动作漫画 #1,因为她当时认为它没用。)

谢谢!

4

2 回答 2

3

Oracle 没有 SQL Server 那样的“聚集索引”概念。一般来说,Oracle 表是“堆”,其中的数据没有特定的顺序存储。有一种特殊类型的表称为INDEX ORGANIZED表,它(顾名思义)是一个像索引一样组织的表。但是,在 Oracle 中,大多数表都不是索引组织的——而我的理解是 SQL Server 中的大多数表具有聚集索引。

不要试图将所有的 Oracle 表声明为组织的索引以模拟 SQL Server;适合一个 DBMS 的东西不一定适合另一个 DBMS。我建议您阅读Oracle 数据库概念指南以了解 Oracle 的工作原理。

索引组织表由 ALL_TABLES 和 USER_TABLES 中的 IOT_TYPE = 'IOT' 标识。

于 2009-03-23T12:00:45.197 回答
2

在 SQL Server 世界中称为聚集索引在 Oracle 世界中称为索引组织表。表元数据在此处描述的 all_tables 或 user_tables 系统视图中可用。浏览该链接后,我的猜测是,您可以通过检查 IOT_TYPE 列是否为非空来确定表是索引组织的。

于 2009-03-22T23:19:16.587 回答