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

时间:2009-03-22 23:07:43

标签: sql oracle metadata

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

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

所以,为了真的,真的彻底,我想记住(不是我忘记了什么),如何从Oracle元数据中确定是否有索引是聚集的。

(而且,通常情况下,谷歌就像通过垃圾填埋场一样,寻找你妈妈彻底的老式动作漫画#1因为她认为当时没用。)

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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