189 8069 5689

oracle分区表怎么去掉分区 oracle分区删除数据

Oracle 高效的分区消除

1.高效的分区消除

创新互联技术团队10多年来致力于为客户提供成都网站设计、成都网站制作、成都品牌网站建设成都全网营销、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了1000+网站,包括各类中小企业、企事单位、高校等机构单位。

分区表存在的最大意义在于,可以有效地做到分区消除

分区表其实是将一个大对象分成了多个小对象

同样的语句查询有相同记录的表,分区表的查询代价仅为111,逻辑读仅为566,而普通表的代价却为1298,逻辑读为5990,性能方面有着天壤之别。差别如此之大,应该是和分区表查询只遍历了13个分区中的一个有关。在分区表查询的执行计划中p_start和p_stop都标记上9,表示只遍历了第9个分区。这样避开了对其余12个分区的查询,就是分区消除

测试针对普通表的增加了 area_code 条件的相同 SQL 语句:

组合分区导致范围定位得更小了,只产生了60个逻辑读,比之前的566个逻辑读还要少。至于普通表的查询,因为始终是全表扫描,所以逻辑读依然和之前差不多,达到5931个。

组合分区虽然只有60个逻辑读,比之前范围分区的566个要少得多,但是代价却差不多,甚至还略大于之前的,因为分区数过多,调用有开销。在试验中,表的总记录数不过10万,全表扫描开销都不是太大,这时Oracle内部调用的开销影响就相对较大。如果表是一张超级大表,比如有上亿条记录,那这些开销相比而言就可以忽略不计了,

分区表应用在大表上更合适,至少要大于100万条记录的表方可考虑。

ORACLE分区表用什么方法删除一个分区的所有数据

这个要看你的业务要不要备份保留这个分区的数据,如果不需要保留,可以直接truncate/drop分区的,如果要保留,可以用交换分区方法;

具体步骤:

1.不保留,直接删除:

alter

table

table_name

drop/truncate

partition

partition_name;

具体用drop还是truncate,得你自己衡量,drop的话原来的分区和数据直接就没有了,truncate的话,只是数据没有了,分区还在。

2.保留数据作为备份,交换分区

2.1创建一个表结构一样的表:

create

table

teable_bak

as

select

*

from

table_name

where

1=2;

--只要表结构,不要数据;

2.2分区交换

alter

table

table_name

exchange

partition

partition_name

with

table

table_bak;

这样执行后,分区partition_name的数据就会交换到table_bak中,table_bak的数据(刚刚建的空表)就会到分区里面去。

Oracle创建分区表操作

1、创建语句

create table p(id number)

partition by range(id)

(partition p1 values less than(100) tablespace t1,

partition p2 values less than(200) tablespace t2,

partition p3 values less than(300) tablespace t3);

2、添加分区

alter table p add partition p4 values less than (400) tablespace t4;

3、清除分区数据

alter table p trunc partition p1;

4、删除分区

alter table p drop partition p1;


网页名称:oracle分区表怎么去掉分区 oracle分区删除数据
本文路径:http://jkwzsj.com/article/hhjhps.html

其他资讯