学习《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
相关文档:
1、转换函数
与date操作关系最大的就是两个转换函数:to_date(),to_char()
to_date() 作用将字符类型按一定格式转化为日期类型:
具体用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。
如;to_date(''2004-11-27 13:34:43'', ''yyyy ......
oracle 约束的状态
oracle在创建约束后默认状态是enabled VALIDATED
SQL> create table T2
2 (
3 VID NUMBER,
4 VNAME VARCHAR2(10) not null,
5 VSEX VARCHAR2(10) not null
6 )
7 /
Table created
SQL> alter table t2 add constraints PK_T primary key (vid); ......
ceil(number) 大于或等于的最小整数
floor(number) 小于或等于的最大整数
trunc(number,m) 在整数number的m位置截掉m及以后的位数:
如:trunc(15.78,1)=15.7
trunc(15.78,-1)=15;
round ......
商业开源数据库厂家EnterpriseDB与6月17日发布了最新的Postgres Plus高级服务器版,其目标是提高与Oracle数据库的兼容性,EnterpriseDB是开源数据库PostgreSQL(也叫做Postgres)背后的主要商业支持公司。
其实Postgres Plus高级服务器版并非完全开源,它是在开源的PostgreSQL数据库基础之上添加了许多附加特性,以提高和O ......
一.资源需要:
至少1024 MB物理内存
1024-2048 需1.5倍的交互空间
2048-8192 需1倍的交互空间
8192- 需0.75倍的交互空间
至少400 MB /tmp 临时目录空间
oracle软件需要1.5 GB 到 3.5 GB 磁盘空间
默认数据库需要1.2 GB
二.查看系统资源相关语 ......