分区表条件
- 数据达到
100
万条 - 数据是分段的,即只涉及一部分数据而不是所有数据
- 分区表就是将一个大表分成若干个小表
以下代码为sqlserver
创建分区表
- 分区函数的代码:
CREATE PARTITION FUNCTION partfunSale (datetime)
AS RANGE RIGHT FOR VALUES ('20100101','20110101','20120101','20130101')
CREATE PARTITION FUNCTION
意思是创建一个分区函数。partfunSale
为分区函数名称。AS RANGE RIGHT
为设置分区范围的方式为Right
,也就是右置方式。FOR VALUES ('20100101','20110101','20120101','20130101')
为按这几个值来分区。
- 分区方案代码:
CREATE PARTITION SCHEME partschSale
AS PARTITION partfunSale
TO (
Sale2009,
Sale2010,
Sale2011,
Sale2012,
Sale2013)
CREATE PARTITION SCHEME partschSale
AS PARTITION partfunSale
TO (
Sale2009,
Sale2010,
Sale2011,
Sale2012,
Sale2013)
CREATE PARTITION SCHEME
意思是创建一个分区方案。partschSale
为分区方案名称。AS PARTITION partfunSale
说明该分区方案所使用的数据划分条件(也就是所使用的分区函数)为partfunSale
。TO
后面的内容是指partfunSale
分区函数划分出来的数据对应存放的文件组。
- 创建分区表
CREATE TABLE Sale(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](16) NOT NULL,
[SaleTime][datetime] NOT NULL
) ON partschSale([SaleTime])
CREATE TABLE Sale(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](16) NOT NULL,
[SaleTime][datetime] NOT NULL
) ON partschSale([SaleTime])
CREATE TABLE
意思是创建一个数据表。Sale
为数据表名。()
中为表中的字段,这里的内容和创建普通数据表没有什么区别,惟一需要注意的是不能再创建聚集索引了。道理很简单,聚集索引可以将记录在物理上顺序存储的,而分区表是将数据分别存储在不同的表中,这两个概念是冲突的,所以,在创建分区表的时候就不能再创建聚集索引了。ON partschSale()
说明使用名为partschSale
的分区方案。partschSale()
括号中为用于分区条件的字段是SaleTime
。
Pg
创建分区表Pg
没有分区表的创建命令,是通过创建继承表即约束等规则来创建
规范 时间区分字段统一采用timestamp(0)
一、原始表 amelia_partition
1
create table amelia_partition (
id integer,
name varchar(20),
gender boolean,
yyyymmdd timestamp(0),
dept char(4)
);
二、将普通表转换为分区表(public.partition_generate)
select public.partition_generate('public.tbl_partition','20130101','20130103','day','yyyymmdd');
- 表名
schema.tablename
格式 - 创建分区的起始时间
- 创建分区的结束时间
- 分区类型
day
:天分区mon
:月分区 - 分区字段
版权声明:本文为CSDN博主「hewy0526」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hewy0526/article/details/9115525 ↩︎