nitesh.kodle123 Asked: 2014-02-19 00:57:57 +0800 CST2014-02-19 00:57:57 +0800 CST 2014-02-19 00:57:57 +0800 CST 索引如何在 oracle 中工作?[复制] 772 我想了解: 索引在 oracle 中是如何工作的。 它们是如何存储在磁盘中的。 他们如何提高查询的效率? 第三点是指索引如何提高查询效率,例如在连接、分组子句中。 还有一点是索引在闪回查询中的行为方式。 oracle performance 1 个回答 Voted Best Answer Deven 2014-02-19T01:41:16+08:002014-02-19T01:41:16+08:00 如果堆组织表没有索引,则数据库必须执行全表扫描才能找到值。 以下链接提供了有关索引的详细信息 http://docs.oracle.com/cd/E11882_01/server.112/e25789/indexiot.htm#CNCPT721 在这里您将找到 Oracle 支持的各种索引的详细信息 如果您有类似的查询 Find a,b,c where emp_name = 'Adam Smith' 如果您在列 emp_name 上有一个索引,而不是搜索整个表,则可以直接获取数据。如果该列不是唯一的,则将获取具有 emp_name Adam Smith 的多行。 在大型表上,索引甚至可以将查询性能提高 100 倍。 性能改进取决于选择性。在一列中的百万值中,如果 100% 是唯一的,您将获得最大的选择性并且性能改进是最大的,但如果您只有 2 个不同的列值,例如 0 或 1 或是或否,您可能会得到一些改进或没有改进或甚至退化。 有不同类型的索引,如 B-Tree、Bitmap、Bitmap join 等。最常用的索引是 B-Tree。 B-tree 是一种树形数据结构,它保持数据排序并允许在对数时间内进行搜索、顺序访问、插入和删除。索引作为 B-Tree 存储在磁盘上 您可以在以下链接中找到 B-Tree 索引的详细信息 http://en.wikipedia.org/wiki/B_tree_indexing
如果堆组织表没有索引,则数据库必须执行全表扫描才能找到值。
以下链接提供了有关索引的详细信息 http://docs.oracle.com/cd/E11882_01/server.112/e25789/indexiot.htm#CNCPT721 在这里您将找到 Oracle 支持的各种索引的详细信息
如果您有类似的查询
如果您在列 emp_name 上有一个索引,而不是搜索整个表,则可以直接获取数据。如果该列不是唯一的,则将获取具有 emp_name Adam Smith 的多行。
在大型表上,索引甚至可以将查询性能提高 100 倍。
性能改进取决于选择性。在一列中的百万值中,如果 100% 是唯一的,您将获得最大的选择性并且性能改进是最大的,但如果您只有 2 个不同的列值,例如 0 或 1 或是或否,您可能会得到一些改进或没有改进或甚至退化。
有不同类型的索引,如 B-Tree、Bitmap、Bitmap join 等。最常用的索引是 B-Tree。
B-tree 是一种树形数据结构,它保持数据排序并允许在对数时间内进行搜索、顺序访问、插入和删除。索引作为 B-Tree 存储在磁盘上
您可以在以下链接中找到 B-Tree 索引的详细信息 http://en.wikipedia.org/wiki/B_tree_indexing