场景: 遇到1亿数据量的数据需要根据用户名做些数据统计分析,想直接做些聚合计算基本没可能,于是打算先根据日期按照年月创建分区,然后对各个分区分别进行统计,最后汇总结果。

有两种方法,分别是手工设置分区和自动设置分区,自动设置分区在oracle11g版本才新增的功能。

方法一:自动设置分区的表创建方式如下:

create table TEST_RANGE
(
data_dt NVARCHAR2(10),
deviceid NVARCHAR2(100),
useraccount NVARCHAR2(200),
macadd NVARCHAR2(200),
platform NVARCHAR2(20),
clientver NVARCHAR2(20),
ip NVARCHAR2(30),
channel NVARCHAR2(20),
color NUMBER(15),
lastlogin DATE,
logintimes NUMBER(20),
batch_id NUMBER(38)
)
partition by range (lastlogin)
interval(numtoyminterval(1,'MONTH'))
(
PARTITION P1 VALUES LESS THAN (TO_DATE('2016-07-01','YYYY-MM-DD'))
)

方法二: 手工创建分区记录

操作方式,新建分区表,然后用ETL工具抽取源并写入新表。

create table TEMP_TEST
(
log_id NUMBER(20),
user_id NUMBER(20),
user_name NVARCHAR2(200),
money NUMBER(30,8),
history_total NUMBER(30,8),
order_id NVARCHAR2(100),
money_type_id NUMBER(20),
reason_id NUMBER(20),
operation_user_name NVARCHAR2(200),
operation_user_ip NVARCHAR2(100),
remark NVARCHAR2(200),
osn NVARCHAR2(100),
isn NVARCHAR2(100),
return_sn NVARCHAR2(100),
repeate_flag NUMBER(3),
create_date DATE,
modify_date DATE,
status NUMBER(20),
batch_id NUMBER(38)
) nologging partition by range (create_date)
(
partition create_date1500 values less than (TO_DATE('2015-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1501 values less than (TO_DATE('2015-02-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1502 values less than (TO_DATE('2015-03-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1503 values less than (TO_DATE('2015-04-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1504 values less than (TO_DATE('2015-05-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1505 values less than (TO_DATE('2015-06-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1506 values less than (TO_DATE('2015-07-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1507 values less than (TO_DATE('2015-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1508 values less than (TO_DATE('2015-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1509 values less than (TO_DATE('2015-10-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1510 values less than (TO_DATE('2015-11-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1511 values less than (TO_DATE('2015-12-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1512 values less than (TO_DATE('2016-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1601 values less than (TO_DATE('2016-02-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1602 values less than (TO_DATE('2016-03-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1603 values less than (TO_DATE('2016-04-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1604 values less than (TO_DATE('2016-05-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1605 values less than (TO_DATE('2016-06-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1606 values less than (TO_DATE('2016-07-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1607 values less than (TO_DATE('2016-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1608 values less than (TO_DATE('2016-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1609 values less than (TO_DATE('2016-10-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1610 values less than (TO_DATE('2016-11-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1611 values less than (TO_DATE('2016-12-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS,
partition create_date1612 values less than (TO_DATE('2017-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace DW_STG_TBS
)

2. 表分区的查询

注意要查询的表的名字要大写

SELECT table_name,partition_name FROM user_tab_partitions
WHERE table_name=upper('temp_test');

oracle数据表创建分区与查询的更多相关文章

  1. MySQL数据表range分区例子

    某些行业数据量的增长速度极快,随着数据库中数据量的急速膨胀,数据库的插入和查询效率越来越低.此时,除了程序代码和查询语句外,还得在数据库的结构上做点更改:在一个主读辅写的数据库中,当数据表数据超过10 ...

  2. Oracle的表创建和事务管理

    Oracle的表创建和事务管理 - CURD,根据查询结果创建新表 - 事务管理 - 什么是事务 ,为什么要用事务 - SQL99事务隔离级别 - Oracle事务隔离级别 - 事务回滚 - 隐式回滚 ...

  3. C# - VS2019 通过DataGridView实现对Oracle数据表的增删改查

    前言 通过VS2019建立WinFrm应用程序,搭建桌面程序后,通过封装数据库操作OracleHelper类和业务逻辑操作OracleSQL类,进而通过DataGridView实现对Oracle数据表 ...

  4. Oracle数据表转换为Shapefile(二)

    在上一篇博文<Oracle数据表转换为Shapefile(一)>中详细描述了一种基于Oracle数据表生产Shapefile的技术方法,本文同样以详细图解的方式描述一种更便捷的方法来完成同 ...

  5. Oracle数据表转换为Shapefile(一)

    严格来说,文章标题中的“转换”并不完全合适.本文的主要内容是基于Oracle数据表的数据来生产出Shapefile文件.进行该工作的一个前提条件是:Oracle数据表中包含坐标数值字段,一般来说就是x ...

  6. MySQL 数据表创建及管理

    use stuinfo; -- 指定当前数据库 CREATE table if not exists student1( -- 创建数据表student1 sNo ) not NULL, sName ...

  7. 定时导出Oracle数据表到文本文件的方法

    该实例实现了通过windows定时任务来实现了将数据库中指定数据表数据导出为txt文本格式.其思路是通过可执行的bat文件去调用导出数据脚本,然后再在windows定时任务中调用该bat文件来实现.该 ...

  8. Oracle 复制表创建的sql语句

    http://cache.baiducontent.com/c?m=9d78d513d99e01fc09b3c3690d67c0161343f0652ba1d4020ed08449e3732b4250 ...

  9. mysql数据库表分区详解(数量过大的数据库表通过分区提高查询速度)

    这篇文章主要介绍了MySQL的表分区,例如什么是表分区.为什么要对表进行分区.表分区的4种类型详解等,需要的朋友可以参考下 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysq ...

随机推荐

  1. AngularJs $sce 和 $sceDelegate 上下文转义

    $sce $sce 服务是AngularJs提供的一种严格上下文转义服务. 严格的上下文转义服务 严格的上下文转义(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模 ...

  2. opencv 简单模糊和高斯模糊 cvSmooth

    cv::Mat 是C++版OpenCV的新结构. cvSmooth() 是老版 C API. 没有把C接口与C + + 结合. 建议你们也可以花一些时间看一下介绍. 同样,你如果查看opencv/mo ...

  3. ASP.NET WEB API 测试

    编码时测试: Postman + Fiddler4 Postman进行发包 Fiddler4进行抓包 编码结束后测试: 通过Nuget引入组件WebApiTestClient: 接口文档 类属性 测试

  4. python字符编码(二)

    一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...

  5. MySQL时间函数,用起来比PHP还爽

    前一篇写了PHP的时间函数(还是草稿),这一篇就写Mysql的时间函数吧.最近做的项目,关乎权限,于是自然而然的就与有效期联系在了一起.其中有一个功能是生成特殊表格,可以根据用户的选择,按周.月.季. ...

  6. Xcode中插件在Xcode更新之后解决方法

    >新的解决方法地址:这里 但凡是更新了Xcode的版本,之前安装的Xcode的插件都不会使用,例如:XAlign或者猫神的VVDocument-Xcode插件 解决方法有很多而且很多地方都贴出来 ...

  7. 加载信息,先从数据库取出5条实现分页,鼠标向上滑动触发Ajax再加载5条,达到异步刷新,优化加载。。。

    php数据库取数据 <?php include("conn1.php"); include('../function/functions.php'); $page=intva ...

  8. my.conf 配置编码为utf-8

    MySQL基础配置之mysql的默认字符编码的设置(my.ini设置字符编码) MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以设置UTF-8为例来说明. M ...

  9. Unity3D PerRendererData

    http://nordicedu.com/tkokblog/wordpress/?tag=perrendererdata MaterialPropertyBlock and SpriteRendere ...

  10. ie6下absolute:fixed问题,完美兼容

    普通css代码 .fix_foot{height: 30px; background: #ff0000; position: %; z-index:;} ie6兼容代码 * html,* html b ...