易截截图软件、单文件、免安装、纯绿色、仅160KB

学习《Oracle 9i10g编程艺术》的笔记 (十三) 索引

1.概述
索引是应用设计和开发的一个重要方面。如果有太多的索引,DML 的性能就会受到影响。如果索引太
少,又会影响查询(包括插入、更新和删除)的性能。要找到一个合适的平衡点,这对于应用的性能至关
重要。
我常常发现,人们在应用开发中总是事后才想起索引。我坚持认为这是一种错误的做法。如果你知
道数据将如何使用,从一开始就应该能提出应用中要使用怎样的索引,即具有一组代表性的索引。不过,
一般的做法却往往是随应用“放任自流“,过后才发现哪里需要索引,这种情况实在太多了。这说明,你
没有花时间来了解数据将如何使用以及最终要处理多少行。经过一段时间后,随着数据量的增长,你会不
停地向系统增加索引(也就是说,你所执行的是一种反应式调优)。你就有一些冗余而且从不使用的索引,
这不仅会浪费空间,还会浪费计算资源。磨刀不误砍柴工,如果刚开始的时候花几个小时好好地考虑何时
为数据加索引,以及如何加索引,这肯定能在以后的”调优“中节省更多的时间(注意,我所说的是”肯
定能“节省更多时间,而不只是”可能“节省更多时间)。
2.B*树索引
B*树索引就是我所说的“传统“索引,这是数据库中最常用的一类索引结构。其实现与二叉查找树很
相似。其目标是尽可能减少Oracle 查找数据所花费的时间。不严格地说,如果在一个数字列上有一个索引,
那么从概念上讲这个结构可能如图11.-1 所示。
例如,如果想在索引中找到值42,要从树顶开始,找到左分支。我们要检查这个块,并
发现需要找到范围在“42..50“的块。这个块将是叶子块,其中会指示包含数42 的行。有意思的是,索引
的叶子节点实际上构成了一个双向链表。一旦发现要从叶子节点中的哪里”开始“(也就是说,一旦发现第
一个值),执行值的有序扫描(也称为索引区间扫描(index range scan))就会很容易。我们不用再在索
引结构中导航;而只需根据需要通过叶子节点向前或向后扫描就可以了。所以要满足诸如以下的谓词条件
将相当简单:
where x between 20 and 30
Oracle 发现第一个最小键值大于或等于20 的索引叶子块,然后水平地遍历叶子节点链表,直到最后
命中一个大于30 的值。
B*树索引中不存在非惟一(nonunique)条目。在一个非惟一索引中,Oracle 会把rowid 作为一个额
外的列(有一个长度字节)追加到键上,使得键惟一。例如,如果有一个CREATE INDEX


相关文档:

【oracle知识收集】系统视图和用户权限

ORACLE中数据字典视图分为3大类,     用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
DBA_* ......

Oracle用户、角色、权限和系统资源管理常用操作

查询用户信息
SELECT USERNAME,DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE, PROFILE, ACCOUNT_STATUS, CREATED from dba_users; 查询用户空间使用和上限情况
SELECT username, tablespace_name, bytes/1024/1024 space_used_in_mb, max_bytes/1024/1024 max_space_in_mb from dba_ts_quotas; 创建 ......

ORACLE标签收藏

@@servername:返回运行SQL Server数据库本地服务器的名称。
@@remserver:返回登录记录中记载的远程SQL Server服务器的名称。
@@connections:返回自上次启动SQL Server以来连接或试图连接的次数,用其可让管理人员方便地了解今天所有试图连接服务器的次数。
@@cursor_rows:返回最后连接上并打开的游标中当前存在的合格 ......

ORACLE 一致读(Consistent Read)的步骤

1. Read the Data Block.
2. Read the Row Header.
3. Check the Lock Byte to determine whether there's an ITL entry.
4. Read the ITL entry to determine the Transaction ID (Xid).
5. Read the Transaction Table using the Transaction ID. If the transaction has been committed and has a System Commit ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号