在Oracle中,如果我在列上创建索引,这是否意味着数据将根据该列自动排序?否则,如何更快地搜索基于索引的数据?如果它没有排序,则它是随机的...所以使用列作为where子句不应该更快。
答案 0 :(得分:2)
如果您创建index organized table,表格将根据索引进行物理排序,但这不是通常的索引类型。
当您执行这样的“常规”索引时:
CREATE INDEX myIndex ON myTable(myColumn)
... 不更改表格中行的顺序。相反,它会创建一个单独的索引对象。该索引是有序的,搜索速度更快,因为Oracle在索引中搜索而不是扫描表,并且索引的结构已经过优化,可以快速查找条目。
每个索引条目都包含一个指向表的指针,因此一旦Oracle完成索引搜索,它就会有一个表行指针列表,并使用它们来访问该表。
我在这个答案的顶部给出的链接也涵盖了“常规”索引,并详细解释了所有这些。