oracle分区表

在oracle11g之前,常用的分区表类型为范围分区,散列分区,列表分区, 复合分区
1.范围分区

点击(此处)折叠或打开

  1. create table sale(
  2. prod_id varchar2(12)
  3. cust_id varchar2(12),
  4. quantity number(10,2)
  5. )
  6. partition by range(quantity)
  7. (
  8. partition p_1 values less than(1000),--TABLESPACE tabspace 这里可以指定分区所在的表空间
  9. partition p_2 values less than(2000),
  10. partition p_3 values less than(3000)
  11. );

  12. insert into sale values(1,'A',100);
  13. insert into sale values(2,'B',1100);
  14. insert into sale values(3,'C',2100);
  15. commit;
查看分区:

点击(此处)折叠或打开

  1. SELECT table_name,partition_name,partition_position,high_value FROM user_tab_partitions;


查看插入数据所在的分区:

点击(此处)折叠或打开

  1. select * from sale partition(p_1);
  2. select * from sale partition(p_2);
  3. select * from sale partition(p_3);


2.列表分区
列表分区的特点就是某列的值只有几个

点击(此处)折叠或打开

  1. create table product(
  2. prod_id varchar2(12),
  3. prod_name varchar2(32),
  4. price number(16,6)
  5. )
  6. partition by list(prod_name)
  7. (
  8. partition p_1 values('phone'),
  9. partition p_2 values('computer'),
  10. partition p_3 values('car')
  11. );

  12. insert into product values(1,'phone',1000);
  13. insert into product values(2,'computer',2000);
  14. insert into product values(3,'car',20000);
  15. commit;
查看分区

点击(此处)折叠或打开

  1. SELECT table_name,partition_name,partition_position,high_value FROM user_tab_partitions
  2. WHERE table_name = 'PRODUCT'


查看数据所在的分区

点击(此处)折叠或打开

  1. select * from product partition(p_1);
  2. select * from product partition(p_2);
  3. select * from product partition(p_3);


3.散列分区
散列分区在列值上使用散列算法,以确定将行放在哪个分区中,当列值没有合适的条件时,使用散列分区

点击(此处)折叠或打开

  1. CREATE TABLE student(
  2. stu_id VARCHAR(12),
  3. stu_name VARCHAR2(32),
  4. stu_phone VARCHAR2(11)
  5. )
  6. PARTITION BY HASH(stu_phone) PARTITIONS 4
  7. --store in (tabspace) 这个指定分区所存储的表空间
  8. ;

  9. INSERT INTO student VALUES('101','A','13567891111');
  10. INSERT INTO student VALUES('102','B','13587900110');
  11. INSERT INTO student VALUES('103','C','13567891234');
  12. INSERT INTO student VALUES('104','D','13523468901');
  13. commit;
oracle中在建立散列分区时,一般只需要指定分区的数量即可,一般建议分区的数量为2的N次方,这样更有利于数据的负载均衡。

查看分区

点击(此处)折叠或打开

  1. SELECT table_name,partition_name,partition_position,high_value FROM user_tab_partitions
  2. WHERE table_name = 'STUDENT'


查看各分区的数据


在Oracle11g及其以后,还有引用分区,间隔分区, 基于虚拟列的分区,系统分区
引用分区
引用分区:基于由外键引用父表的分区方法,它依赖已有的父表子表的关系,子表通过外键关联到父表,进而继承父表的分区方式而不需自己创建。主表可以是范围,散列,列表分区。

点击(此处)折叠或打开

  1. create table product(
  2. prod_id varchar2(12),
  3. prod_name varchar2(32),
  4. price number(16,6),
  5. constraint pk_id primary key (prod_id)
  6. )
  7. partition by list(prod_id)
  8. (
  9. partition p_1 values('phone'),
  10. partition p_2 values('computer'),
  11. partition p_3 values('car')

  12. );

  13. create table sale(
  14. prod_id varchar2(12) not null, --这里需要指定Not null约束,否则报错。是在oracle11.2.0.1.0
  15. cust_id varchar2(12),
  16. quantity number(10,2),
  17. constraint fk_id foreign key(prod_id) references product(prod_id)
  18. )
  19. partition by reference(fk_id);
分别查看这两个表的分区情况:

点击(此处)折叠或打开

  1. SELECT table_name,partition_name,partition_position,high_value FROM user_tab_partitions
  2. WHERE table_name IN ('PRODUCT','SALE')

若没有显示的指定分区的名称,默认会继承父表分区的名称。

间隔分区
间隔分区它可以自动的根据阀值创建范围分区,我们只需指定范围分区的起点,后续Oracle会知道如何分区,它是范围分区的扩展。
一般我们在实际的项目中,范围分区一般是以月份。现在建立一个间隔分区,每一个月为一个分区。

点击(此处)折叠或打开

  1. create table sale(
  2. statis_dt date,
  3. sale_amount number(18,6),
  4. prod_name varchar2(12)
  5. )
  6. partition by range(statis_dt)
  7. interval(numtoyminterval(1,'MONTH'))
  8. (
  9. partition p_1 values less than(to_date('20160201','yyyymmdd'))
  10. );
现插入数据和查看分区情况

点击(此处)折叠或打开

  1. insert into sale values(to_date('20151231','yyyymmdd'),1000,'iphone7');
  2. commit;

点击(此处)折叠或打开

  1. SELECT table_name,partition_name,partition_position,high_value FROM user_tab_partitions
  2. WHERE table_name IN ('SALE')


点击(此处)折叠或打开

  1. insert into sale values(to_date('20160531','yyyymmdd'),1000,'iphone8');
  2. commit;

点击(此处)折叠或打开

  1. SELECT table_name,partition_name,partition_position,high_value FROM user_tab_partitions
  2.     WHERE table_name IN ('SALE')

点击(此处)折叠或打开

  1. insert into sale values(to_date('20160430','yyyymmdd'),1000,'iphone7s');
  2. commit;

点击(此处)折叠或打开

  1. SELECT table_name,partition_name,partition_position,high_value FROM user_tab_partitions
  2. WHERE table_name IN ('SALE')


基于虚拟列的分区
把分区建立在某个虚拟列上,即建立在函数或表达式的计算结果上,来完成某种任务

系统分区
不指定分区列,由oracle来完成分区的控制和管理,它没有了范围分区或列表分区的界限








来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29782424/viewspace-2130011/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29782424/viewspace-2130011/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值