这个问题几乎总结了这一点,但我会提供更多细节。
我可以几乎安全地假设Oracle数据库中的任何主键索引都是群集的。但我不能假设。此外,用户可能已创建不是主键的聚簇索引。如果是这样的话,我真的很想知道。
所以,为了真的,真的彻底,我想记住(不是我忘记了什么),如何从Oracle元数据中确定是否有索引是聚集的。
(而且,通常情况下,谷歌就像通过垃圾填埋场一样,寻找你妈妈彻底的老式动作漫画#1因为她认为当时没用。)
谢谢!
答案 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列是否为非空来确定表是否为索引组织。