学习《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
相关文档:
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):
orACLE的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下, ......
ceil(number) 大于或等于的最小整数
floor(number) 小于或等于的最大整数
trunc(number,m) 在整数number的m位置截掉m及以后的位数:
如:trunc(15.78,1)=15.7
trunc(15.78,-1)=15;
round ......
oracle constraints 应用
oracle constraints可以设置为立即检查或者当时事务提交时检查。
可以在创建约束的时候指定是deferrable。然后通过set constraints xxx set deferred或者immediate,也可以在seesion级别设定所有约束为deferred或者immediate(alter seesion set constraints deferred/immediat ......
商业开源数据库厂家EnterpriseDB与6月17日发布了最新的Postgres Plus高级服务器版,其目标是提高与Oracle数据库的兼容性,EnterpriseDB是开源数据库PostgreSQL(也叫做Postgres)背后的主要商业支持公司。
其实Postgres Plus高级服务器版并非完全开源,它是在开源的PostgreSQL数据库基础之上添加了许多附加特性,以提高和O ......
1. ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2. CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
-- -
赵 A
......