技术标签: oracle list 分区详解
Oracle分区表详解:
范围分区
范围分区根据您为每个分区建立的分区键值的范围将数据映射到分区。它是最常见的分区类型,通常与日期一起使用。例如,您可能希望将销售数据分区为每月分区。
使用范围分区时,请考虑以下规则:
每个分区都有一个VALUES LESS THAN子句,它指定了分区的不包含的上限。等于或高于此文字的分区键的任何值都将添加到下一个更高的分区。
除第一个以外,所有分区都具有由VALUES LESS THAN先前分区上的子句指定的隐式下限。
甲MAXVALUE字面可以为最高分区来定义。MAXVALUE表示比分区键的任何其他可能值更高的虚拟无限值,包括空值。
以下部分给出了一个典型的例子。该语句创建一个sales_range在该sales_date字段上进行范围分区的table()。
https://www.cndba.cn/redhat/article/2304
范围分区的典型例子:
CREATE TABLE sales_range
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount NUMBER(10),
sales_date DATE)
PARTITION BY RANGE(sales_date)
(
PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE(‘02/01/2000’,’MM/DD/YYYY’)),
PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE(‘03/01/2000’,’MM/DD/YYYY’)),
PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE(‘04/01/2000’,’MM/DD/YYYY’)),
PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE(‘05/01/2000’,’MM/DD/YYYY’))
);
https://www.cndba.cn/redhat/article/2304
列表分区
列表分区使您能够明确地控制行映射到分区的行为。
您可以通过在每个分区的说明中指定分区键的离散值列表来执行此操作。
这与范围分区不同,其中一系列值与分区和散列分区相关联,其中哈希函数控制行到分区映射。
列表分区的优点是您可以以自然的方式对无序和无关的数据集进行分组和组织。
列表分区的细节可以用一个例子来描述。在这种情况下,假设您要按地区划分销售表。
这意味着根据其地理位置将状态分组在一起,如下例所示。
列出分区示例:
CREATE TABLE sales_list
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_state VARCHAR2(20),
sales_amount NUMBER(10),
sales_date DATE)
PARTITION BY LIST(sales_state)
(
PARTITION sales_west VALUES(‘California’, ‘Hawaii’),
PARTITION sales_east VALUES (‘New York’, ‘Virginia’, ‘Florida’),
PARTITION sales_central VALUES(‘Texas’, ‘Illinois’),
PARTITION sales_other VALUES(DEFAULT)
);
scott@QHPRI>desc sales_list;
Name Null? Typehttps://www.cndba.cn/redhat/article/2304
SALESMAN_ID NUMBER(5)
SALESMAN_NAME VARCHAR2(30)
SALES_STATE VARCHAR2(20)
SALES_AMOUNT NUMBER(10)
SALES_DATE DATE
insert into sales_list values (100,’anshen’,’California’,100,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
insert into sales_list values (100,’anshen’,’New York’,100,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’Virginia’,101,’05-JAN-2017’);
insert into sales_list values (100,’anshen’,’Florida’,100,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
insert into sales_list values (100,’anshen’,’Texas’,100,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);
insert into sales_list values (100,’anshen’,’Texas’,100,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
insert into sales_list values (100,’anshen’,’Florida’,100,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);
insert into sales_list values (100,’anshen’,’California’,100,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
insert into sales_list values (101,’anshen’,’taiwan’,101,’05-JAN-2017’);
通过检查行的分区列的值是否落在描述分区的值集合内,将一行映射到分区。例如,行如下插入:
(10,’Jones’,’Hawaii’,100,’05-JAN-2017’)映射到分区sales_west
(21,’Smith’,’Florida’,150,’15-JAN-2017’)映射到分区sales_east
(32,’Lee’,’Colorado’,130,’21-JAN-2017’)映射到分区sales_other
与范围和散列分区不同,列分区不支持多列分区密钥。如果表由列表分区,则分区键只能由表的单列组成。
该DEFAULT分区使您能够避免使用默认分区指定列表分区表的所有可能值,以便不映射到任何其他分区的所有行都不会生成错误。
列表分区就是列出某一列所有的字段值,然后根据字段值进行数据选址DML操作。
CREATE TABLE sales_list_test
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_state VARCHAR2(20),
sales_amount NUMBER(10),
sales_date DATE)
PARTITION BY LIST(sales_state)
(
PARTITION sales_west VALUES(‘California’, ‘Hawaii’),
PARTITION sales_east VALUES (‘New York’, ‘Virginia’, ‘Florida’),
PARTITION sales_central VALUES(‘Texas’, ‘Illinois’)
);
insert into sales_list_test values (100,’anshen’,’California’,100,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
insert into sales_list_test values (100,’anshen’,’New York’,100,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’Virginia’,101,’05-JAN-2017’);
insert into sales_list_test values (100,’anshen’,’Florida’,100,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
insert into sales_list_test values (100,’anshen’,’Texas’,100,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);
insert into sales_list_test values (100,’anshen’,’Texas’,100,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
insert into sales_list_test values (100,’anshen’,’Florida’,100,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);
insert into sales_list_test values (100,’anshen’,’California’,100,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);
接下来,我们插入一个在list 分区中不存在的一个字段的值,taiwan。
insert into sales_list_test values (101,’anshen’,’taiwan’,101,’05-JAN-2017’);
scott@QHPRI>insert into sales_list_test values (101,’anshen’,’taiwan’,101,’05-JAN-2017’);
insert into sales_list_test values (101,’anshen’,’taiwan’,101,’05-JAN-2017’)
*
ERROR at line 1:
ORA-14400: inserted partition key does not map to any partition
散列分区
哈希分区可以轻松分割不适用于范围或列表分区的数据。它使用简单的语法来实现,并且易于实现。当以下情况时,它比范围分区更好:
您事先不知道有多少数据映射到给定范围内
范围分区的大小将相当显着或将难以手动平衡
范围划分将导致数据不合需要地聚集
性能特征如并行DML,分区修剪和分区连接很重要
分割,删除或合并分区的概念不适用于哈希分区。相反,哈希分区可以添加和合并。https://www.cndba.cn/redhat/article/2304https://www.cndba.cn/redhat/article/2304
CREATE TABLE sales_hash
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount NUMBER(10),
week_no NUMBER(2))
PARTITION BY HASH(salesman_id)
PARTITIONS 4
STORE IN (ts1, ts2, ts3, ts4);https://www.cndba.cn/redhat/article/2304
https://www.cndba.cn/redhat/article/2304
CREATE TABLE sales_hash_test1
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount NUMBER(10),
week_no NUMBER(2))
PARTITION BY HASH(salesman_id)
PARTITIONS 5
STORE IN (ts1, ts2, ts3, ts4);
CREATE TABLE sales_hash_test10
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_amount NUMBER(10),
week_no NUMBER(2))
PARTITION BY HASH(salesman_id)
PARTITIONS 10
STORE IN (ts1, ts2, ts3, ts4);
前面的语句创建一个表sales_hash,它是salesman_id字段上的哈希分区。表空间名称ts1,ts2,ts3,和ts4。使用这种语法,我们确保在指定的表空间中以循环方式创建分区。
哈希分区不用指定PARTITION_NAME 系统创建。
scott@QHPRI>select TABLE_OWNER,TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME,USER_STATS,INTERVAL from dba_tab_partitions where TABLE_OWNER=’SCOTT’ and TABLE_NAME=upper(‘sales_hash_test10’);
TABLE_OWNER TABLE_NAME COM PARTITION_NAME SUBPARTITION_COUNT TABLESPACE_NAME USE INThttps://www.cndba.cn/redhat/article/2304
SCOTT SALES_HASH_TEST10 NO SYS_P85 0 TS1 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P86 0 TS2 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P87 0 TS3 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P88 0 TS4 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P89 0 TS1 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P90 0 TS2 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P91 0 TS3 NO NO
TABLE_OWNER TABLE_NAME COM PARTITION_NAME SUBPARTITION_COUNT TABLESPACE_NAME USE INThttps://www.cndba.cn/redhat/article/2304
SCOTT SALES_HASH_TEST10 NO SYS_P92 0 TS4 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P93 0 TS1 NO NO
SCOTT SALES_HASH_TEST10 NO SYS_P94 0 TS2 NO NO
10 rows selected.
Elapsed: 00:00:00.05
当然我们创建分区也可以指定分区名字:如下
create table hash_table(
obj_id number(10),
object_id number(10),
object_name varchar2(128),
owner varchar2(30),
object_type varchar2(19),
created date)
partition by hash(object_id)
(
partition h_objid1 tablespace ts1 ,
partition h_objid2 tablespace ts2,
partition h_objid3 tablespace ts3,
partition h_objid4 tablespace ts4
) ;
scott@QHPRI>select TABLE_OWNER,TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME,USER_STATS,INTERVAL from dba_tab_partitions where TABLE_OWNER=’SCOTT’ and TABLE_NAME=upper(‘hash_table’);
TABLE_OWNER TABLE_NAME COM PARTITION_NAME SUBPARTITION_COUNT TABLESPACE_NAME USE INT
SCOTT HASH_TABLE NO H_OBJID1 0 TS1 NO NO
SCOTT HASH_TABLE NO H_OBJID2 0 TS2 NO NO
SCOTT HASH_TABLE NO H_OBJID3 0 TS3 NO NO
SCOTT HASH_TABLE NO H_OBJID4 0 TS4 NO NO
Elapsed: 00:00:00.03https://www.cndba.cn/redhat/article/2304
版权声明:本文为博主原创文章,未经博主允许不得转载。
Oracle分区表详解:
文章浏览阅读8k次,点赞2次,收藏6次。QT设置QLabel中字体的颜色其实,这是一个比较常见的问题。大致有几种做法:一是使用setPalette()方法;二是使用样式表;三是可以使用QStyle;四是可以在其中使用一些简单的HTML样式。下面就具体说一下,也算是个总结吧。第一种,使用setPalette()方法如下:QLabel *label = new QLabel(tr("Hello Qt!"));QP_qolable 字体颜色
文章浏览阅读3.7k次。使用C# 作为开发语言,将pb文件转换为cs文件的时候相信很多人都会遇到一个很棘手的问题,那就是protoc3环境下,import Timestamp的问题,在头部 import “google/protobuf/timestamp.proto”;的时候会抛异常:google/protobuf/timestamp.proto" was not found or had errors;解决办法【博主「pamxy」的原创文章的分享】:(注:之后才发现,不需要添加这个目录也可以,因为timestamp.p_import "google/protobuf/timestamp.proto" was not found or had errors.
文章浏览阅读4.1w次,点赞9次,收藏98次。一、准备工具: 1. app:VNET(抓包用)、京东; 安卓手机需要下载VNET软件。下载官网:https://www.vnet-tech.com/zh/ 2. 已安装部署好的青龙面板;二、抓包wskey: 1. 打开已下载的VNET软件,第一步先安装CA证书; 点击右下角三角形按钮(开始抓包按钮),会提示安装证书,点击确定即可,app就会将CA证书下载至手机里,随后在手机设置里进行安装,这里不同手机可能安装位置不同,具体..._jd_wsck
文章浏览阅读2.9k次,点赞7次,收藏3次。本文针对mybatis-plus自动填充第一次更新能正常填充,第二次更新无法自动填充问题。????mybatis-plus自动填充:当要填充的字段不为空时,填充无效问题的解决????先上一副官方的图:取自官方:https://mp.baomidou.com/guide/auto-fill-metainfo.html第三条注意事项为自动填充失效原因:MetaObjectHandler提供的默认方法的策略均为:如果属性有值则不覆盖,如果填充值为null则不填充以官方案例为例:```java_mybatisplus插入不放为空的字段
文章浏览阅读1w次,点赞25次,收藏94次。利用 Application Complier 完成MATLAB转exe文件_matlab exe
文章浏览阅读137次。近期项目需要研究paypal支付,官网上的指导写的过于复杂,可能是老外的思维和中国人不一样吧。难得是发现下面这篇文章:http://www.androidhive.info/2015/02/Android-integrating-paypal-using-PHP-MySQL-part-1/在这篇文章的基础上,查看SDK简化了代码,给出下面这个例子,..._paypal支付集成到anroid应用中
文章浏览阅读2.3k次,点赞29次,收藏52次。nuScenes 数据集 (pronounced /nu:ːsiː:nz/) 是由 Motional (以前称为 nuTonomy) 团队开发的自动驾驶公共大型数据集。nuScenes 数据集的灵感来自于开创性的 KITTI 数据集。nuScenes 是第一个提供自动驾驶车辆整个传感器套件 (6 个摄像头、1 个 LIDAR、5 个 RADAR、GPS、IMU) 数据的大型数据集。与 KITTI 相比,nuScenes 包含的对象注释多了 7 倍。_nuscense数据集
文章浏览阅读535次。我正在实现一个程序,该程序可以侦听特定主题,并在ESP8266发布新消息时对此做出反应.从ESP8266收到新消息时,我的程序将触发回调并执行一系列任务.我在回调函数中发布了两条消息,回到了Arduino正在侦听的主题.但是,仅在函数退出后才发布消息.谢谢您的所有宝贵时间.我试图在回调函数中使用loop(1),超时为1秒.该程序将立即发布该消息,但似乎陷入了循环.有人可以给我一些指针如何在我的回调..._python 函数里面 mqtt调用publish方法 没有效果
文章浏览阅读3.4w次,点赞16次,收藏81次。微软出来了win11预览版系统,很多网友给自己的电脑下载安装尝鲜,不过因为是测试版可能会有比较多bug,又只有英文,有些网友使用起来并不顺畅,因此想要将win11退回win10系统。那么win11怎么装回win10系统呢?今天小编就教下大家win11退回win10系统的方法。方法一:1、首先点击开始菜单,在其中找到“设置”2、在设置面板中,我们可以找到“更新和安全”3、在更新和安全中,找到点击左边栏的“恢复”4、恢复的右侧我们就可以看到“回退到上版本的win10”了。方法二:_安装win10后卸载win11
文章浏览阅读3.3k次,点赞2次,收藏3次。数据定义_sql server菜鸟教程
文章浏览阅读1.9k次。1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一..._给定一个浮点数数组nums(逗号分隔)和一个浮点数目标值target(与数组空格分隔),请
文章浏览阅读152次。提高性能有如下方法1、Cython,用于合并python和c语言静态编译泛型2、IPython.parallel,用于在本地或者集群上并行执行代码3、numexpr,用于快速数值运算4、multiprocessing,python内建的并行处理模块5、Numba,用于为cpu动态编译python代码6、NumbaPro,用于为多核cpu和gpu动态编译python代码为了验证相同算法在上面不同实现..._np.array 测试gpu性能