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