Sqlserver 创建基于时间的表分区简单用法

环境:

select @@version

Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4 (X64)
    Nov 30 2018 12:57:58
    Copyright (C) 2017 Microsoft Corporation
    Developer Edition (64-bit) on Linux (CentOS Linux 7 (Core))

测试过程:

-- 创建文件组,文件
alter database t add filegroup ByDatatimeGroup1
alter database t add filegroup ByDatatimeGroup2
alter database t add filegroup ByDatatimeGroup3
alter database t add filegroup ByDatatimeGroup4

alter database t add file 
(name=N'ByDatatime1',filename=N'/var/opt/mssql/data/ByDatatime1.ndf',size=5Mb,filegrowth=5mb)
to filegroup ByDatatimeGroup1
alter database t add file 
(name=N'ByDatatime2',filename=N'/var/opt/mssql/data/ByDatatime2.ndf',size=5Mb,filegrowth=5mb)
to filegroup ByDatatimeGroup2
alter database t add file 
(name=N'ByDatatime3',filename=N'/var/opt/mssql/data/ByDatatime3.ndf',size=5Mb,filegrowth=5mb)
to filegroup ByDatatimeGroup3
alter database t add file 
(name=N'ByDatatime4',filename=N'/var/opt/mssql/data/ByDatatime4.ndf',size=5Mb,filegrowth=5mb)
to filegroup ByDatatimeGroup4


-- 分区函数
create partition function [PF_GK] (datetime) as range left for values
('2019-01-01','2019-02-01','2019-03-01','2019-04-01')

-- 编写分区方案
 create partition scheme RangeSchema_CreateTime
 as partition PF_GK
 to (ByDatatimeGroup1,ByDatatimeGroup2,ByDatatimeGroup3,ByDatatimeGroup4,ByDatatimeGroup4)

-- 创建分区表
  create table T_TEST
 (
   ID  varchar(50),
   Name varchar(50),
   CreateTime datetime 
 ) on RangeSchema_CreateTime(CreateTime);

-- test
insert into t_test(id,name,createtime) values(1,'china','2018-12-01')
insert into t_test(id,name,createtime) values(1,'china','2019-01-01')
insert into t_test(id,name,createtime) values(2,'japan','2019-02-01')
insert into t_test(id,name,createtime) values(1,'usa','2019-03-01')
insert into t_test(id,name,createtime) values(1,'france','2019-04-01')
insert into t_test(id,name,createtime) values(1,'france','2019-05-01')
insert into t_test(id,name,createtime) values(1,'france','2019-06-01')

--查看分区表中,每个非空分区存在的行数
select $partition.PF_GK(CreateTime) as pNum,count(*) as rCount
from T_TEST
group by  $partition.PF_GK(CreateTime)

-- 查看指定分区中的数据记录
select * from T_TEST where $partition.PF_GK(CreateTime)=5
select * from sys.partition_schemes -- 查询分区
select * from sys.partition_range_values -- 查询分区范围
select * from sys.partition_functions --查询分区函数

 

官方链接:https://docs.microsoft.com/zh-cn/sql/relational-databases/partitions/create-partitioned-tables-and-indexes?view=sql-server-2017

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道-夕死可矣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值