表分区

--第一步:创建数据库文件组。注:可以到数据库属性中直接设置文件组
alter database MyDatabase add filegroup Group01
alter database MyDatabase add filegroup Group02
alter database MyDatabase add filegroup Group03




--第二步:创建数据库文件到文件组中。注:可以点击数据库属性在文件里面添加

alter database MyDataBase add file(name=N'file01',filename=N'D:SqlServer2012Groupmember01.ndf',size=5Mb,filegrowth=5Mb) to filegroup [Group01];
alter database MyDataBase add file(name=N'file02',filename=N'D:SqlServer2012Groupmember02.ndf',size=5Mb,filegrowth=5Mb) to filegroup [Group02];
alter database MyDataBase add file(name=N'file03',filename=N'D:SqlServer2012Groupmember03.ndf',size=5Mb,filegrowth=5Mb) to filegroup [Group03];
--.....




--第三步:右击某个表,选择存储=>创建分区=>选择某个字段=>下一步选择分区函数(新建)=>下一步选择分区方案=>下一步创建分区向导

--左边界:讲某个临界值划分给上一个分区;右边界:讲临界值划分给下一个分区

--注:选择某个字段是按照此字段进行数据划分,比如:主键字段1~100000,100001~200000的数据量,或者可以按时间间隔进行划分

USE [MyDatabase]
GO
BEGIN TRANSACTION
CREATE PARTITION FUNCTION [MyPartFun01](int) AS RANGE LEFT FOR VALUES (N'100000', N'200000', N'300000') --创建分区函数,表示每个分区应该存放多少数据

CREATE PARTITION SCHEME [MyPartScheme01] AS PARTITION [MyPartFun01] TO ([PRIMARY], [Group01], [Group02], [Group03]) --给表创建分区方案,按照分区函数将分好的数据放到对应的文件组中

ALTER TABLE [dbo].[Student] DROP CONSTRAINT [PK_Student] --删除原先的约束[PK_Student]

ALTER TABLE [dbo].[Student] ADD  CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED  --新增约束:主键和索引为[StuId]字段,且在[MyPartScheme01]分区方案上同样执行
(
    [StuId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [MyPartScheme01]([StuId])

COMMIT TRANSACTION




--删除分区方案和函数
drop partition scheme [MyPartScheme01];
drop partition function [MyPartFun01];




--分区拆分
alter partition function [MyPartFun01]()
split range(N'150000')  --将第二个分区拆为2个分区,因为第二个分区数据为10w~20w,15w包含在其中

--合并分区
alter partition function [MyPartFun01]()
merge range(N'1500000')  --将第二第三分区合并,去掉其中一个边界值




--创建表时指定文件组
create table <表名> (
  <列名>
)on <文件组名>





--将Student分区表中的第一分区数据复制到普通表中
alter table Student switch partition 1 to <普通表名>

--将普通表中的数据复制到bigorder分区表中的第一分区
alter table <普通表名> switch to Student partition 1 
原文地址:https://www.cnblogs.com/AlexOneBlogs/p/8058421.html