首页 > 编程知识 正文

oracle 索引语句,查询表的索引 oracle

时间:2023-05-04 17:23:01 阅读:110650 作者:310

一. radty概述

如果数据表包含大量数据记录,则在对表执行指定条件的查询时。 常规查询方法读取所有记录,并将查询条件与读取的每个记录进行比较,并返回满足条件的记录。 这种操作的时间和I/O开销很大。 在这种情况下,可以考虑通过建立radty来减少开销。

要查询表中的指定记录,如果没有radty,则必须遍历整个表,而有了radty,只需在radty中查找满足查询条件的radty字段的值即可例如,如果将表看作书,radty的作用就像书的目录一样。 没有目录的情况下,要想在书中找到指定的内容就必须阅读全文,而有了目录,只通过目录就可以快速找到包含所需内容的页码(相当于ROWID )。

用户可以在Oracle中创建不同类型的radty,以满足不同表的特性。 根据radty数据的存储方式,radty可以分为b树radty、位图radty、反向键radty、基于函数的radty; 根据radty列的唯一性,可以分为唯一radty和非唯一radty; 根据radty列的个数可以分为单列radty和复合radty。

创建和计划radty时。 必须选择适当的表和列。 选择不正确的表和列不仅不会加快查询速度,而且会大大降低DML操作的速度。 因此,创建radty时必须注意以下事项:

1.radty必须在WHERE子句的频繁引用列表中创建。 如果在ssdxh中对经常出现的列或某些列执行radty操作,并且搜索行数小于总行数的15%,则应考虑在这些列中创建radty。

2 .如果经常需要基于特定列或多列的排序操作,则在这些列中创建radty可以缩短数据排序时间。

3 .限制表的radty数量。 radty主要用于加速查询,但会降低DML操作的速度。 radty越多,DML操作的速度越慢,特别是对INSERT和DELETE操作的速度影响越大。 因此,在规划radty时,必须仔细权衡查询和DML的需求。

指定radty块空间的使用参数。 基于表创建radty时,Oracle会将相应的表列数据添加到radty块中。 向radty块添加数据时,Oracle会根据PCTFREE参数在radty块中保留为将来的INSERT操作准备的子空间。 如果将来要在表中执行大量INSERT操作,则在创建radty时必须设置较大的PCTFREE。

5 .将表和radty放在适当的表空间中可以简化表空间的管理。 将表和radty部署到不同的表空间可以提高访问性能。

在ssdxh中创建radty时,可以使用NOLOGGING选项最小化重做记录。 您可以使用“无记录”选项来节省重做日志空间,缩短创建radty的时间,并提高并行创建radty的性能。

7 .请勿在小表格中创建radty。

8 .要提高多表连接的性能,必须在连接列中创建radty。

二.创建radty

创建radty时,Oracle会首先对要创建radty的字段进行排序,然后将排序后的字段值和相应记录的ROWID存储在radty段中。 要创建radty,请使用CREATE INDEX语句。 radty通常由表的所有者创建。 要以另一个用户身份建立radty,您必须具有CREATE ANY INDEX系统权限或对相应表的索引对象权限。

1 .创建b树radty

b树radty是Oralce数据库中最常见的radty类型(缺省),以b树结构组织并包含radty数据。 默认情况下,b树radty中的数据按升序排序。 如果表包含非常多的数据,并且经常在WHERE子句中引用一列或多列,则必须根据该列或多列创建b树radty。 b树radty由根节点、分支节点、叶节点构成。 其中主要数据集中在叶的节点块所指的数据行上。

根节点块: radty顶层块。 包含指向下级节点的信息。

分支节点块包含以下节点的信息:

叶节点块:通常也称为叶,包含radty条目数据,radty条目包含radty列中的值以及与记录行相对应的物理地址ROWID。

在b树radty中,无论用户试图搜索哪个分支的叶块,保证经由其的radty层相同。 Oracel采用这种方法radty,以便无论radty条目位于何处,都可以通过相同的I/O进行检索。 因此被称为b树radty。

如果经常将列或列应用于WHERE词法,则必须基于这些列创建b树radty。

2 .创建位图radty

radty的作用简单地说,就是根据给定的radty列的值能够迅速地找到对应的记录。 B树radty通过将排序的radty列的值和记录的物理地址ROWID保存在radty中来实现快速搜索。 但是,在某些特殊的表中,b树radty的效率可能会降低。

例如,在包含性别列的表中,只有男性或女性才能用于该列。 在性别列中创建b树radty时,创建的b树只有两个分支。 在列基数低的情况下,显然要为此制作b树radty

不合适。“基数低”表示在radty列中,所有取值的数量比表中行的数量少。如“性别”只有两个取值;再比如某个拥有10000行的表,它的一个列包含100个不同的取值,则该列仍然满足低基数的要求,因为该列与该行数的比例为1%。Oracle推荐一个列的基数小于1%时,这些列不再适合建立B树radty,而使用于位图radty。

3.建立反向键radty

反向键radty是一个特殊类型的B树radty,在顺序递增列上建立radty时非常有用。反向键radty的工作原理非常简单,在存储结构方面它与常规的B树radty相同。然而,如果用户使用序列在表中输入记录,则反向键radty首先指向每个列键值的字节,然后在反向后的新数据上进行radty。例如,如果用户输入的radty列为2011,则反向转换后为1102;9527反向转换后为7259.需要注意,刚才提及的两个序列编号是递增的,但是当进行反向键radty时确是非递增的。这意味着如果将其添加到子叶节点,可能会在任意的子节点中进行。这样就使得新数据在值的范围上的分布通常比原来的有序数更均匀。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。