几句SQL 完成分区使用

/****** Script for SelectTopNRows command from SSMS ******/

– 创建表
SELECT TOP 1000 [Id]
,[Name]
,[CreateTime]
FROM [demo].[dbo].[Users]

– 添加文件组
alter database [demo] add filegroup T2018
alter database [demo] add filegroup T2019
alter database [demo] add filegroup T2020

–添加文件
alter database [demo] add file
(Name=N’T2018’,filename=‘C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\T2018.ndf’,size=5mb,maxsize=100Mb,filegrowth=5mb)
to filegroup T2018

alter database [demo] add file
(Name=N’T2019’,filename=‘C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\T2019.ndf’,size=5mb,maxsize=100Mb,filegrowth=5mb)
to filegroup T2019

alter database [demo] add file
(Name=N’T2020’,filename=‘C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\T2020.ndf’,size=5mb,maxsize=100Mb,filegrowth=5mb)
to filegroup T2020

–创建分区函数
create partition function RangeTime (datetime)
as range left for values (‘2018-12-31’,‘2019-12-31’)

–创建分区方案
create partition scheme RangeSchema_CreateTime
as partition RangeTime
to (T2018,T2019,T2020)

–每个时间段写入数据
INSERT INTO [dbo].[Users]
([Name]
,[CreateTime])
VALUES
(‘Tom3’
,‘2020-01-01’)
GO

select * from [dbo].[Users]

–删除表存在的聚集索引
ALTER TABLE Users DROP CONSTRAINT PK__Users__3214EC078EA2153D

–修改为非聚集索引
ALTER TABLE Users ADD CONSTRAINT PK_Users PRIMARY KEY NONCLUSTERED (Id ASC)

–创建分区聚集索引
CREATE CLUSTERED INDEX IX_CreateTime ON Users ( CreateTime )
ON RangeSchema_CreateTime ( CreateTime )

–查询每个分区的数据条数
SELECT $partition.RangeTime(CreateTime), count(*) FROM Users group by $partition.RangeTime(CreateTime)

–查询分区=1 上面的所有数据
select * from Users where $partition.RangeTime(CreateTime) =1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值