首页>计算机>Oracle认证>学习教程>正文
我当时初学ORACLE认证时写的一些笔记

www.zige365.com 2008-8-18 15:48:43 点击:发送给好友 和学友门交流一下 收藏到我的会员中心


初学ORACLE时的一些笔记

索引:
ROWID的概念
索引的概念:
唯一索引
组合索引
位图索引
基于函数的索引

ROWID的概念
存储了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和 /,
row在数据块中的存储方式

SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;

比如: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

 
EMPNO NAME DEPT SAL ETC…   
70 Bob 10 450 ….   
10 Frank 10 550 ….   
30 Ed 30 723 ….   
20 Adam 20 556 ….   
40 David 10 225 ….   
60 Graham 30 900 ….   
50 Charles 20 888 ….   
…. …. …. …. …. 

目标:查询Frank的工资salary
建立索引:create index emp_name_idx on emp(name);
[试验]测试索引的作用:

1. 运行/rdbms/admin/utlxplan 脚本
2. 建立测试表
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;
3. set autotrace trace explain
4. set timing on
5. 分析表,6. 可以得到cost
7. 查询 object_name=’DBA_INDEXES’
8. 在object_name列上建立索引
9. 再查询

[思考]索引的代价:
插入,更新


唯一索引
何时创建:当某列任意两行的值都不相同
当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立
语法:CREATE UNIQUE INDEX index ON table (column);
演示
组合索引
何时创建:当两个或多个列经常一起出现在where条件中时,则在这些列上同时创建组合索引
组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面
演示(组合列,单独列)

位图索引 
何时创建:
列中有非常多的重复的值时候。例如某列保存了 “性别”信息。
Where 条件中包含了很多OR操作符。
较少的update操作,因为要相应的跟新所有的bitmap
结构:位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或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));

本新闻共2页,当前在第1页  1  2  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
国外公司的Oracle DBA试题
ORACLE认证基础:ORACLE系统概述
Oracle常用函数列表速查
启动Oracle常见疑难问题分析
Oracle数据库中的“锁”学习小结