网站建设总体流程,淄博网站建设报价,小企业做网站选那种,2020ppt模板免费下载Oracle索引 编辑本词条缺少信息栏、名片图#xff0c;补充相关内容使词条更完整#xff0c;还能快速升级#xff0c;赶紧来编辑吧#xff01;在oracle索引是一种供服务器在表中快速查找一个行的数据库结构。合理使用索引能够大大提高数据库的运行效率。目录 1 概念及作用 2… Oracle索引 编辑本词条缺少信息栏、名片图补充相关内容使词条更完整还能快速升级赶紧来编辑吧 在oracle索引是一种供服务器在表中快速查找一个行的数据库结构。合理使用索引能够大大提高数据库的运行效率。 目录 1 概念及作用 2 索引的分类 3 索引使用原则 4 Oracle创建索引语法 5 语法分析 概念及作用 编辑 在oracle中索引是一种供服务器在表中快速查找一个行的数据库结构。在数据库中建立索引主要有以下作用。 1快速存取数据。 2既可以改善数据库性能又可以保证列值的唯一性。 3实现表与表之间的参照完整性 4在使用orderby、groupby子句进行数据检索时利用索引可以减少排序和分组的时间。 索引的分类 编辑 在关系数据库中每一行都由一个行唯一标识RowID。RowID包括该行所在的文件、在文件中的块数和块中的行号。索引中包含一个索引条目每一个索引条目都有一个键值和一个RowID其中键值可以是一列或者多列的组合。 一索引按存储方法分类可以分为2类B*树索引和位图索引。 1B*树索引的存储结构类似书的索引结构有分支和叶两种类型的存储数据块分支块相当于书的大目录叶块相当于索引到的具体的书页。Oracle用B*树机制存储索引条目以保证用最短路径访问键值。默认情况下大多使用B*树索引该索引就是通常所见的唯一索引、逆序索引。 2位图索引存储主要用于节省空间减少oracle对数据块的访问。它采用位图偏移方式来与表的行ID号对应采用位图索引一般是重复值太多的表字段。位图索引之所以在实际密集型OLTP联机事物处理中用的比较少是因为OLTP会对表进行大量的删除、修改、新建操作。Oracle每次进行操作都会对要操作的数据块加锁。以防止多人操作容易产生的数据库锁等待甚至死锁现象。在OLAP联机分析处理中应用位图有优势因为OLAP中大部分是对数据库的查询操作而且一般采用数据仓库技术所以大量数据采用位图索引节省空间比较明显。当创建表的命令中包含有唯一性关键字时不能创建位图索引创建全局分区索引时也不能用位图索引。 二索引按功能和索引对象分还有以下类型。 1唯一索引意味着不会有两行记录相同的索引键值。唯一索引表中的记录没有RowID不能再对其建立其他索引。在oracle10g中要建立唯一索引必须在表中设置主关键字建立了唯一索引的表只按照该唯一索引结构排序。 2非唯一索引不对索引列的值进行唯一性限制。 3分区索引是指索引可以分散地存在于多个不同的表空间中其优点是可以提高数据查询的效率。 4未排序索引也称为正向索引。Oracle10g数据库中的行是按升序排序的创建索引时不必指定对其排序而使用默认的顺序。 5逆序索引也称反向索引。该索引同样保持列按顺序排列但是颠倒已索引的每列的字节。 6基于函数的索引是指索引中的一列或者多列是一个函数或者表达式索引根据函数或表达式计算索引列的值。可以将基于函数的索引建立创建成位图索引。 另外按照索引所包含的列数可以把索引分为单列索引和复合索引。索引列只有一列的索引为单列索引对多列同时索引称为复合索引。 索引使用原则 编辑 在正确使用索引的前提下索引可以提高检索相应的表的速度。当用户考虑在表中使用索引时应遵循下列一些基本原则。 1在表中插入数据后创建索引。在表中插入数据后创建索引效率将更高。如果在装载数据之前创建索引那么插入每行时oracle都必须更改索引。 2索引正确的表和列。如果经常检索包含大量数据的表中小于15%的行就需要创建索引。为了改善多个表的相互关系常常使用索引列进行关系连接。 3主键和唯一关键字所在的列自动具有索引但应该在与之关联的表中的外部关键字所在的列上创建索引。 4合理安排索引列。在createindex语句中列的排序会影响查询的性能通常将最常用的列放在前面。创建一个索引来提高多列的查询效率时应该清楚地了解这个多列的索引对什么列的存取有效对什么列的存取无效。 例如在A,B,C三列上创建索引 A有效 AB有效 ABC有效 5限制表中索引的数量。尽管表可以有任意数量的索引可是索引越多在修改表中的数据时对索引做出相应更改的工作量也越大效率也就越低。同样目前不用的索引应该及时删除。 6指定索引数据块空间的使用。创建索引时索引的数据块是用表中现存的值填充的直到达到PCTFREE为止。如果打算将许多行插入到被索引的表中PCTFREE就应设置得大一点不能给索引指定PCTUSED。 7根据索引大小设置存储参数。创建索引之前应先估计索引的大小以便更好地促进规划和管理磁盘空间。单个索引项的最大值大约是数据块大小的一半。 Oracle创建索引语法 编辑 Create[UNIQUE|BITMAP]index [schema.]index_nameon[schema.]table_name(column_name[ASC|DESC],…n,[column_expression])|CLUSTER[schema.]cluster_name [INITRANSinteger] [MAXTRANSinteger] [PCTFREEinteger] [PCTUESDinteger] [TABLESPACEtablespace_name] [STORAGEstorage_clause] [NOSORT] [REVERSE] 语法分析 编辑 UNIQUE指定索引所基于的列或多列值必须唯一。默认的索引是非唯一的。 BITMAP指定建立位映射索引而不是B*索引。位映射索引保存的行标识符与作为位映射的键值有关。位映射中的每一位都对应于一个可能的行标识符位设置意味着具有对应行标识符的行包含该键值。 ONtable_name建立基于函数的索引。用table_name的列、常数、SQL函数和自定义函数创建的表达式。指定column_expression以后用基于函数的索引查询时必须保证查询该column_expression不为空。 CLUSTER创建cluster_name簇索引。若表不用schema限制oracle假设簇包含在你自己的方案中。不能为散列簇创建簇索引。 NOSORT数据库中的行以升序保存在创建索引时不必对行排序。若索引列或多列的行不以升序保存oracle会返回错误。 REVERSE指定以反序索引块的字节不包含行标识符。NOSORT不能与REVERSE一起指定。转载于:https://www.cnblogs.com/ailsalin/p/6528010.html