首页 > 代码库 > Oracle表分区
Oracle表分区
当数据非常庞大的时候,比如,要查询ID<1000的时候,如果不使用表分区的话,需要全表扫描(判断每条记录的ID是否小于1000),这样大大影响了查询的速度。创建索引是性能调优的方法,同样,表分区也是。每个分区都是独立的一个段,可以放在不同的表空间下面。
表分区有以下优点:
(1)由于将数据分散到各个区中,减少了数据损坏的可能性。
(2)可以对单独的分区进行数据的备份与恢复。
(3)可以将分区分散到不同的物理磁盘,来分散IO。
(4)提高数据库管理与性能。
oracle提供了以下几种分区方法:
(1)范围分区(range) (2)哈希分区(hash) (3)列表分区(List) (4)范围-哈希分区 (5)范围-列表分区
range分区:就是根据表的某个字段值范围进行分区。 如下:创建分区表,根据ID的值进行分区,如果某些值暂时无法预测,可以使用maxvalue。
create table testpartition(id number,name varchar(100)) partition by range(id) ( partition p1 values less than (10), partition p2 values less than (20), partition p3 values less than (30), partition p4 values less than (maxvalue) )
查看用户表分区情况:
select * from user_tab_partitions
插入数据:
insert into testpartition values(15,‘zhengxisheng‘) insert into testpartition values(5,‘jisheng‘) insert into testpartition values(32,‘jidong‘)
查询各个分区的数据:
select * from testpartition partition(p2)
更新数据:报错如下:
update testpartition set id =‘12‘ where id =‘5‘
需要成设置可移动的分区:
alter table testpartition enable row movement update testpartition set id =‘12‘ where id =‘5‘
再次查询分区p2的数据:
Oracle表分区
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。