正 文

优化Oracle库表设计的若干方法


www.7dspace.com  更新日期:2005-10-29 4:09:35  七度空间



  3、将子表的外键列的索引改为压缩型

  3.1 压缩型索引的原理和用途

  在前面的例子中,由于一条订单会对应多条订单条目,所以T_ORDER_ITEM的ORDER_ID字段总会出现重复的值,如:

ITEM_ID ORDER_ID ITEM COUNT
1 100 101 1
2 100 104 2
3 100 201 3
4 200 301 2
5 200 401 1
6 200 205 3


  在ORDER_ID列上创建一个普通未压缩的B-Tree索引,则索引数据的物理上的存储形式如下:


图 11 未进行压缩的索引存储

  ORDER_ID的重复值在索引块中重复出现,这样不但增加了存储空间的需求,而且因为查询时需要读取更多的索引数据块,所以查询性能也会降低=。让我们来看一下经过压缩后索引数据的存储方式:


图 12 进行压缩的索引存储

  压缩型的索引消除了重复的索引值,将相同索引列值所关联的ROWID存储在一起。这样,不但节省了存储空间,查询效率也提高了,真可谓两全齐美了。

  对象T_ORDER和T_ORDER_ITEM这样的主从表进行查询时,一般情况下,我们都必须通过外键查询出子表所有关联的记录,所以在子表的外键上建立压缩型的索引是非常适合的。

  3.2 压缩型索引的SQL语句

  创建压缩型索引的SQL语句非常简单,在T_ORDER_ITEM的ORDER_ID上创建压缩型索引的SQL如下所示:

create index IDX_ORDER_ITEM_ORDER_ID on T_ORDER_ITEM ( ORDER_ID ASC) compress;

  需要在创建索引的语句后附上compress关键字就可以了。

  3.3 PowerDesigner如何创建压缩型索引

  1) 打开T_ORDER_ITEM表的Table Properties的窗口,切换到Indexes页,为ORDER_ID列创建一个名为IDX_ORDER_ITEM_ORDER_ID的索引。

  2) 双击IDX_ORDER_ITEM_ORDER_ID弹出Index Properties窗口,切换到Options页,按图 13将索引设置为压缩型:


图 13 将索引指定为压缩型
10页,页码:[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 

上一篇:打赢防毒战争 教你彻底防杀木马病毒
下一篇:用ASP编程实现网络内容快速查找
作者:陈雄华  来源:天极网 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐