是否创建索引会自动对数据进行排序

时间:2013-07-30 02:07:11

标签: oracle sorting indexing

在Oracle中,如果我在列上创建索引,这是否意味着数据将根据该列自动排序?否则,如何更快地搜索基于索引的数据?如果它没有排序,则它是随机的...所以使用列作为where子句不应该更快。

1 个答案:

答案 0 :(得分:2)

如果您创建index organized table,表格将根据索引进行物理排序,但这不是通常的索引类型

当您执行这样的“常规”索引时:

CREATE INDEX myIndex ON myTable(myColumn)

... 更改表格中行的顺序。相反,它会创建一个单独的索引对象。该索引是有序的,搜索速度更快,因为Oracle在索引中搜索而不是扫描表,并且索引的结构已经过优化,可以快速查找条目。

每个索引条目都包含一个指向表的指针,因此一旦Oracle完成索引搜索,它就会有一个表行指针列表,并使用它们来访问该表。

我在这个答案的顶部给出的链接也涵盖了“常规”索引,并详细解释了所有这些。