Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 创建索引是否会自动对数据进行排序_Oracle_Sorting_Indexing - Fatal编程技术网

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

Oracle 创建索引是否会自动对数据进行排序,oracle,sorting,indexing,Oracle,Sorting,Indexing,在Oracle中,如果我在列上创建索引,这是否意味着数据将根据该列自动排序?否则,如何基于索引搜索数据更快?如果未排序,则是随机的…因此将列用作where子句应该不会更快。如果创建,则会根据索引对表进行物理排序,但这不是通常的索引类型 当您执行如下“常规”索引时: CREATE INDEX myIndex ON myTable(myColumn) 。。。它不改变表中行的顺序。相反,它创建一个单独的索引对象。该索引是有序的,搜索速度更快,因为Oracle在索引中搜索而不是扫描表,并且索引的结构经

在Oracle中,如果我在列上创建索引,这是否意味着数据将根据该列自动排序?否则,如何基于索引搜索数据更快?如果未排序,则是随机的…因此将列用作where子句应该不会更快。

如果创建,则会根据索引对表进行物理排序,但这不是通常的索引类型

当您执行如下“常规”索引时:

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

每个索引项都包含一个指向表的指针,因此一旦Oracle完成索引搜索,它就会有一个表行指针列表,并使用这些指针访问表


我在回答的顶部给出的链接还包括“常规”索引,并详细解释了所有这些内容。

根据您的解释,在已经有idex的情况下添加分区有何帮助?如果真是这样的话?我可以单独问这个问题,如果你认为这是更好的。如果桌子很大,或者在其他一些狭窄的情况下,这会有所帮助。有更多的信息(实际上可能太多了)。如果您有一个特定的场景,并且想知道是否应该分区,我建议您在上面发布这个问题(带有详细信息),因为分区开始进入“核心”DBA内容。