Oracle 9i:如何使用元数据确定索引是不是是集群的?

Posted

技术标签:

【中文标题】Oracle 9i:如何使用元数据确定索引是不是是集群的?【英文标题】:Oracle 9i: How can I determine, using metadata, whether or not an index is clustered?Oracle 9i:如何使用元数据确定索引是否是集群的? 【发布时间】:2009-03-22 23:07:42 【问题描述】:

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

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

所以,为了真的,真的彻底,我想记住(不是我忘记或任何东西),如何从 Oracle 元数据中确定索引是否是集群的。

(而且,通常情况下,Google 就像在垃圾填埋场中生根发芽,寻找你妈妈看过的老式动作漫画 #1,因为她当时认为它没用。)

谢谢!

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Oracle 9i:如何使用元数据确定索引是不是是集群的?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 数据库 索引 全文索引

求解如何在windows7上安装oracle 9i?

oracle 索引失效是怎么回事?

怎么安装Oracle9i

如何在 pl/sql (oracle 9i) 中查找数据类型的大小?

win7 64位的 如何安装 oracle 9i