Oracle 虚拟列 子分区 virtual column partition

Oracle 11g 虚拟列子分区实验

以下两个create 语句均为创建成功;

需求描述:

项目要求对3个字段进行分区,如时间,小时,还有个区域ID,便联想到虚拟列。

drop table test_part purge;
 
create table test_part
 (t_time date,
 hour number,
 city_id number,
 hour_city varchar2(108) GENERATED ALWAYS AS(to_char(hour)||‘|‘||to_char(city_id)))
 partition by range(t_time) subpartition byhash(hour_city)
 (partition part_201705 values less than(to_date(‘20170601‘, ‘yyyymmdd‘))
 (subpartition subpart_201705_01,
  subpartition subpart_201705_02),
 partition part_201706 values less than (to_date(‘20170701‘, ‘yyyymmdd‘))
 (subpartition subpart_201706_01,
  subpartition subpart_201706_02))
 
create table test_part
 (t_time date,
 hour number(2),
 city_id number,
 day_hour varchar2(50) GENERATED ALWAYS AS (to_char(t_time,‘yyyymmdd‘)||‘|‘||to_char(hour)))
 partition by range(day_hour) subpartition byhash(city_id)
 (partition part_201705 values less than(‘2017060100‘)
 (subpartition subpart_201705_01,
  subpartition subpart_201705_02),
 partition part_201706 values less than (‘2017070100‘)
 (subpartition subpart_201706_01,
  subpartition subpart_201706_02))
时间: 2024-12-27 00:38:10

Oracle 虚拟列 子分区 virtual column partition的相关文章

Oracle 11g 虚拟列 Virtual Column介绍

Oracle 11G 虚拟列 Virtual Column Oracle 11G 在表中引入了虚拟列,虚拟列是一个表达式,在运行时计算,不存储在数据库中,不能更新虚拟列的值. 定义一个虚拟列的语法: column_name [datatype] [GENERATED ALWAYS] AS [expression] [VIRTUAL] 1.虚拟列可以用在select,update,delete语句的where条件中,但是不能用于DML语句 2.可以基于虚拟列来做分区 3. 可以在虚拟列上建索引,o

虚拟列分区

Oracle11g 增加了虚拟列的新特性,具体说明如下: 1.只能在堆组织表(普通表)上创建虚拟列,不能在索引组织表.外部表.临时表上创建虚拟列: 2.虚拟列不能是LOB或者RAW类型: 3.虚拟列的值并不是真实存在的,只有用到时,才根据表达式计算出虚拟列的值,磁盘上并不存放.虚拟列的值由ORACLE根据表达式自动计算得出,不可以手动去修改和指定虚拟列的值. 4.可把虚拟列当做分区关键字建立分区表,这是ORACLE 11g的另一新特性--虚拟列分区 创建带有虚拟列的分区表:    create

Oracle 11g新特性之--虚拟列(Virtual Column)

Oracle 11g新特性之--虚拟列(Virtual Column) Oracle 11G虚拟列Virtual Column介绍 Oracle 11G 在表中引入了虚拟列,虚拟列是一个表达式,在运行时计算,不存储在数据库中,不能更新虚拟列的值. 定义一个虚拟列的语法: column_name [datatype] [GENERATED ALWAYS] AS [expression] [VIRTUAL] 1.虚拟列可以用在select,update,delete语句的where条件中,但是不能用

[oracle 11g 新特性] virtual column虚拟列

总结:虚拟列可以使用于一些特殊场合,实质是类似于函数列(即以 表中已有的列 经过函数运算得来),“虚拟列不存储在数据库中,是在执行查询时由oracle后台计算出来返回给用户”,因此虚拟列不会增加存储空间,但是由于需要计算,需要消耗额外的CPU Time. ---创建表时使用虚拟列 SQL> create table test4(id number,name varchar2(300),hash_id as(ora_hash(id))); Table created ---alter 表新增虚拟列

Oracle 11g新特性虚拟列分区

现在有个需求:一个单据表要按照月份来分区,如果是在Oracle 10g上,只能再加一个字段.在Oracle 11g以后就不一样了,可以用虚拟列处理. SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Oracle 11g虚拟列上建分区

在Oracle 11g上,可以在虚拟列上做分区,这个特性还比较有用,下面来做一个测试: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Rele

Oracle 11g 新特性(一)-- 虚拟列

数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Oracle11g 增加了虚拟列的新特性, 具体说明如下: 1> 只能在堆组织表(普通表)上创建虚拟列,不能在索引组织表.外部表.临时表上创建虚拟列 2> 虚拟列不能是LOB或者RAW类型 3> 虚拟列的值并不是真实存在的,只有用到时,才根据表达式计算出虚拟列的值,磁盘上并不存放 4> 可把虚拟列当做分区关键字建立分区表,这是ORACLE

ORACLE虚拟索引(Virtual Index)

ORACLE虚拟索引(Virtual Index)   虚拟索引概念 虚拟索引(Virtual Indexes)是一个定义在数据字典中的假索引(fake index),它没有相关的索引段.虚拟索引的目的是模拟索引的存在而不用真实的创建一个完整索引.这允许开发者创建虚拟索引来查看相关执行计划而不用等到真实创建完索引才能查看索引对执行计划的影响,并且不会增加存储空间的使用.如果我们观察到优化器生成了一个昂贵的执行计划并且SQL调整指导建议我们对某些的某列创建索引,但在生产数据库环境中创建索引与测试并

MySQL 5.7 虚拟列 (virtual columns)

参考资料: Generated Columns in MySQL 5.7.5 MySQL 5.7新特性之Generated Column(函数索引) MySQL 5.7原生JSON格式支持 Generated Column 在MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column和Stored Generated Column,前者只将Generated Column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上:后者