Oracle的学习笔记(1

1 表分区。
经过试验,对于大表的以表分区格式进行存放是最好的。这样的大表主要体现,表内容表现为历史部分及新增部分,也就是说,表内容会随着时间的推进而慢慢的变大,越来越大。这样的表,就得用分区的格式存放,好处是,对于分区表和没有分区的表,在查询的时候,有分区的表会查询比较快。

创建表 P_TABLE ,这表是每月都有一批新的数。一般比较重要的数都会保存十年以上。那么我这里就以年为分区的界线对表进行划分存放。

sql> CREATE TABLE P_TABLE ( ID NUMBER(8), TDATE , MEMO VARCHAR2(100)  

PARTITION BY RANGE(TDATE)
(
PARTITION P_TABLE_2000 VALUES LESS THAN ( TO_DATE('2001-01-01','YYYY-MM-DD') )  TABLESPACE P_TABLE_2000 ,
PARTITION P_TABLE_2001 VALUES LESS THAN ( TO_DATE('2002-01-01','YYYY-MM-DD') ) TABLESPACE P_TABLE_2001 ,
PARTITION P_TABLE_2002 VALUES LESS THAN ( TO_DATE('2003-01-01','YYYY-MM-DD') ) TABLESPACE P_TABLE_2002 ,
PARTITION P_TABLE_2003 VALUES LESS THAN ( TO_DATE('2004-01-01','YYYY-MM-DD') ) TABLESPACE P_TABLE_2003 ,
PARTITION P_TABLE_2004 VALUES LESS THAN ( TO_DATE('2005-01-01','YYYY-MM-DD') ) TABLESPACE P_TABLE_2004 ,
PARTITION P_TABLE_2005 VALUES LESS THAN ( TO_DATE('2006-01-01','YYYY-MM-DD') ) TABLESPACE P_TABLE_2005 ,
PARTITION P_TABLE_2006 VALUES LESS THAN ( TO_DATE('2007-01-01','YYYY-MM-DD') ) TABLESPACE P_TABLE_2006 
) ;

这样就可以建立带有 2000 ~ 2006 数据的分区表,而且我这里把每个分区表都存放到一个独立的表空间里面,方便数据的备份转移,或者进行表分区的数据交换等。

至于表空间是需要先创建的。
sql>CREATE TABLESPACE P_TABLE_2000 NOLOGGING DATAFILE 'D:\ORACLE\PRODUCT\10.2\ORCL\MYTABLESPACE\P_TABLE_2000.DBF'


SIZE 10M  AUTOEXTEND ON ;

这样就可以建立一个属于自己管理的表空间,而且分区表的索引也可以同时建到单独的表空间内进行管理。以后不用了就可以先DROP表,然后再DROP表空间,就可以把P_TABLE_2000.DBF等自己创建的表空间文件删除,以节约硬盘空间了。

分区表索引的建立:
sql> CREATE INDEX IDX_P_TABLE_2000_MEMO ON P_TABLE_2000(MEMO) 

(
PARTITION P_TABLE_2000   TABLESPACE P_TABLE_2000 ,
PARTITION P_TABLE_2001   TABLESPACE P_TABLE_2001 ,
PARTITION P_TABLE_2002   TABLESPACE P_TABLE_2002 ,
PARTITION P_TABLE_2003   TABLESPACE P_TABLE_2003 ,
PARTITION P_TABLE_2004   TABLESPACE P_TABLE_2004 ,
PARTITION P_TABLE_2005   TABLESPACE P_TABLE_2005 ,
PARTITION P_TABLE_2006   TABLESPACE P_TABLE_2006 
) ;


当建立分区后,对于带有日期的查询条件时,会先对分区进行筛选,这样就起到把大表先缩成小分区表进行查询,再配合上其他的索引值,那就会变得很快了。就算同等建有索引的表,分区后的查询速度也会比不分区时要快。
具体分析我会在下一次日志写上分析的细节,主要是用到 AUTOTRACE的分析功能。

今天就写到这里。。。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值