《Oracle索引详解》PPT课件
- 格式:ppt
- 大小:6.10 MB
- 文档页数:37
详解Oracle数据库中文全文索引Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。
Oracle Text是Oracle9i采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8以前它的名称是Oracle ConText Cartridge。
二、Oracle Text 索引文档时所使用的主要逻辑步骤如下:(1) 数据存储逻辑搜索表的所有行,并读取列中的数据。
通常,这只是列数据,但有些数据存储使用列数据作为文档数据的指针。
(2) 过滤器提取文档数据并将其转换为文本表示方式。
存储二进制文档(如Word 或Acrobat 文件) 时需要这样做。
过滤器的输出不必是纯文本格式-- 它可以是XML 或HTML 之类的文本格式。
(3) 分段器提取过滤器的输出信息,并将其转换为纯文本。
包括XML 和HTML 在内的不同文本格式有不同的分段器。
转换为纯文本涉及检测重要文档段标记、移去不可见的信息和文本重新格式化。
(4) 词法分析器提取分段器中的纯文本,并将其拆分为不连续的标记。
既存在空白字符分隔语言使用的词法分析器,也存在分段复杂的亚洲语言使用的专门词法分析器。
(5) 索引引擎提取词法分析器中的所有标记、文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表,并构建反向索引。
倒排索引存储标记和含有这些标记的文档。
三、需要的权限要使用Oracle Text,必须具有CTXAPP角色或者是CTXSYS用户。
Oracle Text为系统管理员提供CTXSYS用户,为应用程序开发人员提供CTXAPP角色。
具有CTXAPP角色的用户可执行以下任务:创建索引,管理Oracle Text 数据字典,包括创建和删除首选项,进行Oracle Text 查询,使用Oracle Text PL/SQL程序包。
ORACLE分区表、分区索引详解ORACLE分区表、分区索引ORACLE对于分区表⽅式其实就是将表分段存储,⼀般普通表格是⼀个段存储,⽽分区表会分成多个段,所以查找数据过程都是先定位根据查询条件定位分区范围,即数据在那个分区或那⼏个内部,然后在分区内部去查找数据,⼀个分区⼀般保证四⼗多万条数据就⽐较正常了,但是分区表并⾮乱建⽴,⽽其维护性也相对较为复杂⼀点,⽽索引的创建也是有点讲究的,这些以下尽量阐述详细即可。
1、类型说明:range分区⽅式,也算是最常⽤的分区⽅式,其通过某字段或⼏个字段的组合的值,从⼩到⼤,按照指定的范围说明进⾏分区,我们在INSERT数据的时候就会存储到指定的分区中。
List分区⽅式,⼀般是在range基础上做的⼆级分区较多,是⼀种列举⽅式进⾏分区,⼀般讲某些地区、状态或指定规则的编码等进⾏划分。
Hash分区⽅式,它没有固定的规则,由ORACLE管理,只需要将值INSERT进去,ORACLE会⾃动去根据⼀套HASH算法去划分分区,只需要告诉ORACLE要分⼏个区即可。
分区可以进⾏两两组合,ORACLE 11G以前两两组合都必须以range作为⼀级分区的开头,ORACLE⽬前最多⽀持2级别分区,但这个级别已经够我们使⽤了。
我这只以最简单的分区⽅式创建分区来说明问题,就拿range分区来说明问题吧(基本创建语句如下):CREATE [url=]TABLE[/url] TABLE_PARTITION(COL1 NUMBER,COL2 VARCHAR2(10))partition by range(COL1)(partition TAB_PARTOTION_01 values less than (450000),partition TAB_PARTOTION_02 values less than (900000),partition TAB_PARTOTION_03 values less than (1350000),partition TAB_PARTOTION_04 values less than (1800000),partition TAB_PARTOTION_OTHER values less THAN (MAXVALUE));这个分区表创建了四个定长分区,理想情况下,存储450000条数据,扩展分区是超过这个数额的分区,当发现扩展分区有数据的时候,可以进⾏将扩展分区做SPLIT操作,这个后⾯说明,这⾥先说⼀下⼀些常⽤的分区表查询功能,我们先插⼊⼀些数据进去。
oracle索引介绍(图⽂详解)对于数据库来说,索引是⼀个必选项,但对于现在的各种⼤型数据库来说,索引可以⼤⼤提⾼数据库的性能,以⾄于它变成了数据库不可缺少的⼀部分。
索引分类:逻辑分类single column or concatenated 对⼀列或多列建所引unique or nonunique 唯⼀的和⾮唯⼀的所引,也就是对某⼀列或⼏列的键值(key)是否是唯⼀的。
Function-based 基于某些函数索引,当执⾏某些函数时需要对其进⾏计算,可以将某些函数的计算结果事先保存并加以索引,提⾼效率。
Doman 索引数据库以外的数据,使⽤相对较少物理分类B-Tree :normal or reverse key B-Tree索引也是我们传统上常见所理解的索引,它⼜可以分为正常所引和倒序索引。
Bitmap :位图所引,后⾯会细讲B-Tree 索引 B-Tree index 也是我们传统上常见所理解的索引。
B-tree (balance tree)即平衡树,左右两个分⽀相对平衡。
B-Tree indexRoot为根节点,branch 为分⽀节点,leaf 到最下⾯⼀层称为叶⼦节点。
每个节点表⽰⼀层,当查找某⼀数据时先读根节点,再读⽀节点,最后找到叶⼦节点。
叶⼦节点会存放index entry (索引⼊⼝),每个索引⼊⼝对应⼀条记录。
Index entry 的组成部分:Indexentry entry header 存放⼀些控制信息。
Key column length 某⼀key的长度Key column value 某⼀个key 的值ROWID 指针,具体指向于某⼀个数据创建索引:复制代码代码如下:⽤户登录:SQL> conn as1/as1Connected.创建表:SQL> create table dex (id int,sex char(1),name char(10));Table created.向表中插⼊1000条数据SQL> beginfor i in 1..1000loopinsert into dex values(i,'M','chongshi');end loop;commit;end;/PL/SQL procedure successfully completed.查看表记录SQL> select * from dex;ID SE NAME---------- -- --------------------... . .....M chongshiM chongshiM chongshiM chongshiM chongshiM chongshiM chongshiM chongshiM chongshiM chongshirows selected.创建索引:SQL> create index dex_idx1 on dex(id);Index created.注:对表的第⼀列(id)创建索引。
Oracle 索引详解一.索引介绍1.1 索引的创建语法:CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>ON <schema>.<table_name>(<column_name> | <expression> ASC | DESC,<column_name> | <expression> ASC | DESC,...)TABLESPACE <tablespace_name>STORAGE <storage_settings>LOGGING | NOLOGGINGCOMPUTE STATISTICSNOCOMPRESS | COMPRESS<nn>NOSORT | REVERSEPARTITION | GLOBAL PARTITION<partition_setting>相关说明1)UNIQUE | BITMAP:指定UNIQUE为唯一值索引,BITMAP为位图索引,省略为B-Tree 索引。
2)<column_name> | <expression> ASC | DESC:可以对多列进行联合索引,当为expression 时即“基于函数的索引”3)TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)4)STORAGE:可进一步设置表空间的存储参数5)LOGGING | NOLOGGING:是否对索引产生重做日志(对大表尽量使用NOLOGGING来减少占用空间并提高效率)6)COMPUTE STATISTICS:创建新索引时收集统计信息7)NOCOMPRESS | COMPRESS<nn>:是否使用“键压缩”(使用键压缩可以删除一个键列中出现的重复值)8)NOSORT | REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值9)PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区1.2 索引特点:第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
Oracle 索引的初步学习海量oracle资料下载:1.B树索引的相关概念索引与表一样,也属于段(segment)的一种。
里面存放了用户的数据,跟表一样需要占用磁盘空间。
只不过,在索引里的数据存放形式与表里的数据存放形式非常的不一样。
在理解索引时,可以想象一本书,其中书的内容就相当于表里的数据,而书前面的目录就相当于该表的索引。
同时,通常情况下,索引所占用的磁盘空间要比表要小的多,其主要作用是为了加快对数据的搜索速度,也可以用来保证数据的唯一性。
但是,索引作为一种可选的数据结构,你可以选择为某个表里的创建索引,也可以不创建。
这是因为一旦创建了索引,就意味着oracle对表进行DML(包括INSERT、UPDATE、DELETE)时,必须处理额外的工作量(也就是对索引结构的维护)以及存储方面的开销。
所以创建索引时,需要考虑创建索引所带来的查询性能方面的提高,与引起的额外的开销相比,是否值得。
从物理上说,索引通常可以分为:分区和非分区索引、常规B树索引、位图(bitmap)索引、翻转(reverse)索引等。
其中,B树索引属于最常见的索引,由于我们的这篇文章主要就是对B树索引所做的探讨,因此下面只要说到索引,都是指B树索引。
B树索引是一个典型的树结构,其包含的组件主要是:叶子节点(Leaf node):包含条目直接指向表里的数据行。
分支节点(Branch node):包含的条目指向索引里其他的分支节点或者是叶子节点。
根节点(Root node):一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。
可以用下图一来描述B树索引的结构。
其中,B表示分支节点,而L表示叶子节点。
对于分支节点块(包括根节点块)来说,其所包含的索引条目都是按照顺序排列的(缺省是升序排列,也可以在创建索引时指定为降序排列)。
每个索引条目(也可以叫做每条记录)都具有两个字段。
第一个字段表示当前该分支节点块下面所链接的索引块中所包含的最小键值;第二个字段为四个字节,表示所链接的索引块的地址,该地址指向下面一个索引块。