Oracle数据库中的索引详解

Oracle数据库中的索引详解,第1张

一 ROWID的概念

存储了row在数据文件中的具 *** 置 位编码的数据 A Z a z + 和 /

row在数据块中的存储方式

SELECT ROWID last_name FROM hr employees WHERE department_id =

比如 OOOOOOFFFBBBBBBRRR

OOOOOO data object number 对应dba_objects data_object_id

FFF file# 对应v$datafile file#

BBBBBB block#

RRR row#

Dbms_rowid包

SELECT dbms_rowid rowid_block_number( AAAGFqAABAAAIWEAAA ) from dual

具体到特定的物理文件

索引的概念

类似书的目录结构

Oracle 的 索引 对象 与表关联的可选对象 提高SQL查询语句的速度

索引直接指向包含所查询值的行的位置 减少磁盘I/O

与所索引的表是相互独立的物理结构

Oracle 自动使用并维护索引 插入 删除 更新表后 自动更新索引

语法 CREATE INDEX index ON table (column[ column] )

B tree结构(非bitmap)

[一]了解索引的工作原理

表 emp

目标 查询Frank的工资salary

建立索引 create index emp_name_idx on emp(name)

 [试验]测试索引的作用

运行/rdbms/admin/utlxplan 脚本

建立测试表

create table t as select * from dba_objects

insert into t select * from t

create table indextable

as select rownum id owner object_name subobject_name

object_id data_object_id object_type created

from t

set autotrace trace explain

set timing on

分析表 可以得到cost

查询 object_name= DBA_INDEXES

在object_name列上建立索引

再查询

[思考]索引的代价

插入 更新

 三 唯一索引

何时创建 当某列任意两行的值都不相同

当建立Primary Key(主键)或者Unique constraint(唯一约束)时 唯一索引将被自动建立

语法 CREATE UNIQUE INDEX index ON table (column)

演示

四 组合索引

何时创建 当两个或多个列经常一起出现在where条件中时 则在这些列上同时创建组合索引

组合索引中列的顺序是任意的 也无需相邻 但是建议将最频繁访问的列放在列表的最前面

演示(组合列 单独列)

 五 位图索引

何时创建

列中有非常多的重复的值时候 例如某列保存了 性别 信息

Where 条件中包含了很多OR *** 作符

较少的update *** 作 因为要相应的跟新所有的bitmap

结构 位图索引使用位图作为键值 对于表中的每一数据行位图包含了TRUE( ) FALSE( ) 或NULL值

优点 位图以一种压缩格式存放 因此占用的磁盘空间比标准索引要小得多

语法 CREATE BITMAP INDEX index ON table (column[ column] )

掩饰

create table bitmaptable as select * from indextable where owner in( SYS PUBLIC )

分析 查找 建立索引 查找

 六 基于函数的索引

何时创建 在WHERE条件语句中包含函数或者表达式时

函数包括 算数表达式 PL/SQL函数 程序包函数 SQL函数 用户自定义函数

语法 CREATE INDEX index ON table (FUNCTION(column))

演示

必须要分析表 并且query_rewrite_enabled=TRUE

或者使用提示/*+ INDEX(ic_index)*/

七 反向键索引

目的 比如索引值是一个自动增长的列

多个用户对集中在少数块上的索引行进行修改 容易引起资源的争用 比如对数据块的等待 此时建立反向索引

性能问题

语法

重建为标准索引 反之不行

 八 键压缩索引

比如表landscp的数据如下

site feature job

Britten Park Rose Bed Prune

Britten Park Rose Bed Mulch

Britten Park Rose Bed Spray

Britten Park Shrub Bed Mulch

Britten Park Shrub Bed Weed

Britten Park Shrub Bed Hoe

……

查询时 以上 列均在where条件中同时出现 所以建立基于以上 列的组合索引 但是发现重复值很多 所以考虑压缩特性

Create index zip_idx

on landscp(site feature job)

press

将索引项分成前缀(prefix)和后缀(postfix)两部分 前两项被放置到前缀部分

Prefix : Britten Park Rose Bed

Prefix : Britten Park Shrub Bed

实际所以的结构为

Prune

Mulch

Spray

Mulch

Weed

Hoe

特点 组合索引的前缀部分具有非选择性时 考虑使用压缩 减少I/O 增加性能

九 索引组织表(IOT)

将表中的数据按照索引的结构存储在索引中 提高查询速度

牺牲插入更新的性能 换取查询性能 通常用于数据仓库 提供大量的查询 极少的插入修改工作

必须指定主键 插入数据时 会根据主键列进行B树索引排序 写入磁盘

 十 分区索引

簇:

A cluster is a group of tables that share the same data blocks because they share mon columns and are often used together

lishixinzhi/Article/program/Oracle/201311/17769

Oracle认证全面解析

Oracle是第一个跨整个产品线(数据库、业务应用软件和应用软件开发与决策支持工具)开发和部署100%基于互联网的企业软件的公司。下面是我整理的关于Oracle认证管理员认证考试,希望大家认真阅读!

一、 Oracle,仅次于微软的世界第二大软件公司

Oracle虽然规模很大,但名声不像微软、IBM那样显赫,很多非计算机专业的在校学生不知道Oracle是何物。但是如果你是一位想在毕业后进入IT行业的学生,那么,你必须知道什么是Oracle.

首先,Oracle是一家软件公司。这家1977成立于加利福尼亚的软件公司是世界上第一个推出关系型数据管理系统(RDBMS)的公司。现在,他们的RDBMS被广泛应用于各种 *** 作环境:Windows NT、基于UNIX系统的小型机、IBM大型机以及一些专用硬件 *** 作系统平台。事实上,Oracle已经成为世界上最大的RDBMS供应商,并且是世界上最主要的信息处理软件供应商。现在,Oracle是仅次于微软公司的世界第二大软件公司,2000年的销售额为101亿美元。现在Oracle在世界范围内大约聘用了4万3千多名专业技术人员,在美国本土有2万1千名。有趣的是,即使在美国本土,Oracle的技术人员(主要是程序员)中有40%是印度人,中国人是第二多的,其次才是美国人。

然后,Oracle是一个庞大的品牌系统。如前所述,Oracle不仅在全球最先推出了RDBMS,并且事实上掌握着这个市场的大部分份额,由于Oracle 公司的RDBMS都以Oracle为名,所以,在某种程度上Oracle己经成为了RDBMS的代名词。而近几年来,Oracle不断积极地扩展自己的业务,成功地开发了许多横向和纵向的产品,譬如Oracle自己设计生产的Oracle服务器,面对商业客户的商业交易系统(Oracle Exchange),Oracle数据中心等等。同时,Oracle还成功开发出了很多面对程序员的开发工具,譬如著名的Designer/2000计算机辅助系统工程(CASE)工具和Developer/2000开发包,这些工具作为“设计器”和“开发器”,有力地帮助了程序员的开发工作,也有力地提高了Oracle的声誉。此外,Oracle还开发了一系列面对不同对象的应用软件,它们被统称为Oracle应用软件。这些软件使得Oracle被广泛应用到各个领域,同时也为Oracle带来滚滚财源。比较常见的Oracle软件产品包括:。Oracle财务软件(Oracle Financial)。Oracle制造业软件(Oracle Manufacturing)。Oracle人力资源软件(Oracle Human Resources)。Oracle自动控制软件(Oracle Automotive)。Oracle 商业交易系统(Oracle Exchange)

以及其他的应用软件。这些软件连同OracleRDBMS使得Oracle成为一个庞大的品牌系统,深入到了人们生产和生活的各个领域。

由于Oracle拥有多年在各种行业下的多种解决方案,拥有基于不同客户环境的Oracle RDMBS服务器工具及规模巨大的应用软件系统,而且,这个庞大的系统正在不同程度、不同层次地为各行各业所广泛应用。因此,能够熟练掌握这个系统的某些方面及适应这个系统的不断更新的专业工程师必然是各界急需的人才,有着良好的就业前景。事实上,Oracle公司也认识到了这一点,这就是Oracle认证专家——OCP(Oracle Certified Professional)的由来。

二、Oracle认证种类介绍

Oracle认证专家——OCP,是由Oracle公司授权国际考试认证中心对考生进行的资格认证。考生按考试标准要求参加几门课程的.考试(一般为3—5门),在通过全部考试后,便可获得OCP的专家认证。

目前OCP认证考试分为:

Database Administrator:数据库管理员考试认证,简称DBA.数据库管理员负责对数据库进行日常的管理、备份及数据库崩溃后的恢复问题。

Database Operator:数据库 *** 作员认证考试,简称DBO.数据库 *** 作员主要是基于Windows NT的Oracle 8数据库管理,能够熟练应用OEM等工具完成对数据库的 *** 作及日常的管理工作。

Database Developer:数据库开发员认证考试,简称DEV.数据库开发员应能熟练掌握用Developer/2000的工具建立各种Forms应用程序,建立各种标准的以及自定义的报表。

Java Developer:Java开发人员考试。

Application Consultant: Oracle产品应用咨询顾问。

其中,Oracle DBA是最吃香,但也是最难考的一个认证。在Oracle的官方的网站上,对DBA有以下说明:

Oracle DBA专家可以跟上如今日趋复杂的系统环境要求。最好的DBA们都在幕后工作,他们小心地维护着系统,使得系统可以每天都平稳地运转,并且防止意外灾难的发生,譬如数据库崩溃或者成小时地宕机。这项艰巨的任务需要对Oracle数据库的结构和运行方式有着广泛泛深入的了解,并且有丰富的实战经验。最好的DBA可以在取得最佳运行状态及防止他们公司停止运行的突发事件中找到平衡。Oracle DBA认证考试就是提供一个证明该人可以胜任Oracle DBA这一职务的认证。本认证考试设计了5门独立的考试,使你可以利用良好的知识获得一个专家认证。

三、如何参加考试?

OCP认证的所有考试也是通过Prometric公司组织的,具体的考试事宜请访问它的官方的网站:www.prometric.com.cn

目前OCP每门考试的费用为125美元。

四、如何准备考试?

1、Oracle公司推荐的官方准备途径

一般来讲,Oracle的考试内容比较多,并且考题也很细,对动手能力要求很强。因此,为了有足够的把握,一定要提前充分准备,而且一定要注重动手实践。在Oracle官方的网站上推荐的通过认证的途径如下,可以进行参考。

Oracle大学:Oracle大学提供的教师引导及基于技术的训练(Instructor-led training and technology- based training)是准备OCP认证的最好方式,这些课程将为你打下需要通过OCP认证的知识基础。你可以查阅一下课程表来选择理想的准备方式,你当地的Oracle大学可以在这方面给你一些最好的建议。你可以访问Oracle的网站http://education.oracle.com,获得更多的信息。

自己准备:实战经验是加深你对Oracle考试内容理解的最好方式。Oracle建议你将理论学习拓展,在实际工作或是练习中使用新学到的技巧和知识来自学。

考试内容检查表:使用考试内容检查表(Test Content Checklist)来确定你必须准备的所有题目。Oracle会不断地更新考试内容检查表,所以请访问Oracle网站 httP://www.oracle.com/education/certification,下载最新的考试指南。

其它考试工具:模拟考试题及自我测试软件可以帮助你更好地准备OCP认证考试。Oracle和自我测试软件公司(Self Test Software)联合出品了一些高质量的考试软件以帮助考生更好地准备OCP认证考试,这些软件可以通过 Oracle 网站 http://www.oracle.com/education/certification定购。

事实上,绝大部分的大陆同学都是通过参加培训班来准备考试的,它们不仅辅导通过考试的知识,而且其他信息包括如何报名,考场上如何应考,都可以得到辅导。以上Oracle官方的介绍只是一般地对你进行一下有关备考的初级教育,事实上,正像我们前面说过的,作为一个庞大的数据库系统,要想掌握好Oracle(更不要说完全掌握了——我甚至怀疑是否有人真正完全掌握过Oracle),从任何角度而言都不是一件易事。除非你有足够的决心和耐心,准备将Oracle当作你的职业之路并致力于数据库技术的研究,你才有可能真正了解这个庞杂系统的精髓。以下的一些论述将有助于你对Oracle有一个初步的了解。

2、Oracle数据库技术基本知识

(1)Oracle数据库涵盖了数据库技术的方方面面。

尽管关系型数据库从原理上来讲并不是很难,有一些数据库知识的人掌握这些原理并不会花很大的气力,而且,一般的关系型数据库软件,譬如 SQL Server,用起来并不复杂,但Oracle绝对与众不同。作为有史以来最成功的关系型数据库软件,Oracle的实现方式和管理维护手段非常丰富,它涉及到很多方面的细节技术。单从任何一个侧面来理解它,是难观其全貌的。要想真的精通它,没有两三年功夫是不行的。单是Oracle的技术文档,就足够淹没你的! 具体说来,Oracle技术包括以下几个主要方面:Oracle系统结构和原理、Oracle数据库的安装和配置、Oracle数据库的管理、Oracle的数据备份与恢复技术、Oracle的性能调整、Oracle的新产品特性(Java支持、应用服务器、时间空间系列、文本服务等)、Oracle的并行服务器技术、Oracle的数据仓库技术、Oracle的对象类型和对象一关系模型等技术……

毫不夸张地说,以上任何一个部分单独拿出来都是很大的题目!

(2)Oracle技术发展快,技术的关联性大。

尽管Oracle只是一个数据库系统,但在实际应用中,你不可能只面对数据库本身。譬如,你在做Oracle数据库的网络管理,你将不可避免地遇到如何与网络通讯、防火墙的技术兼容的问题。同理,你在做其它方面的工作,也肯定有方方面面的技术关联问题需要解决。而且更要命的是,这些技术(包括Oracle本身)发展速度都非常快,这就使得跟上它们的发展成为一件十分费劲的事情。

不过幸运的是,我们并不需要同时了解Oracle的所有方面,Oracle提供了很多应用方向,我们可以按照偏好,选择其中的一个方向,集中时间和精力,努力在这个方向做到有所成就还不是一件很难的事情。由于Oracle目前已是世界上最主要的数据库供应商和第二大软件公司,Oracle的数据库技术已经被广泛应用于各个领域,因而市场上对Oracle人才的需求量是相当之大,获得OCP认证不愁找不到工作。而以后我们可以在工作中学以致用,再努力地钻研Oracle数据库及相关技术。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9971644.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存