RegMail是用来存放注册邮件的表,现以创建时间(CreateTime)字段来给表进行分区,具体步骤如下:
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--为分区创建存储文件
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER DATABASE Test ADD FILEGROUP RegMailFile2007
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER DATABASE Test ADD FILEGROUP RegMailFile2008
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER DATABASE Test ADD FILEGROUP RegMailFile2009
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep查看数据库的文件组能看到如下图:
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--为文件组设置存储文件
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER DATABASE Test ADD FILE (NAME = 'RegMailFile2007', FILENAME = 'E:\Data\RegMailFile2007.NDF') TO FILEGROUP RegMail2007;
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER DATABASE Test ADD FILE (NAME = 'RegMailFile2008', FILENAME = 'E:\Data\RegMailFile2008.NDF') TO FILEGROUP RegMail2008;
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER DATABASE Test ADD FILE (NAME = 'RegMailFile2009', FILENAME = 'E:\Data\RegMailFile2009.NDF') TO FILEGROUP RegMail2009;
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep查看数据库的存储文件能看到如下图:
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
--创建分区函数
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epCREATE PARTITION FUNCTION pf_RegMail(datetime)
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epAS
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epRANGE RIGHT FOR VALUES ('20070101 00:00:00 ' ,'20080101 00:00:00')
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep创建完了在分区函数中可以看到刚创建好的pf_RegMail
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep如果创建后想对分区函数进行修改可以用如下访求 :
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--修改分区函数(拆分)
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epalter PARTITION FUNCTION pf_RegMail()
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epsplit RANGE ('20090101 00:00:00');
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--修改分区函数(合并)
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER PARTITION FUNCTION pf_RegMail()
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epMERGE RANGE ('20080101 00:00:00');
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--创建分区方案
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epCREATE PARTITION SCHEME ps_RegMail
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epAS PARTITION pf_RegMail TO (RegMail2007,RegMail2008,RegMail2009)
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep如果想去分区方案进行修改
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--修改分区方案
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER PARTITION SCHEME ps_RegMail
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epNEXT USED RegMail2010;
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--创建分区表
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epCREATE TABLE [dbo].[PARTITIONERegMail](
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep[id] [int] IDENTITY(1,1) NOT NULL,
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep[CreateTime] [datetime] NOT NULL
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep CONSTRAINT [PK_PARTITIONERegMail] PRIMARY KEY NONCLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [ps_RegMail]([CreeateTime])
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--此为关键步骤,将现有数据存入上面所建的文件中
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epALTER TABLE [dbo].[RegMail] WITH NOCHECK ADD
CONSTRAINT [PK_RegMail] PRIMARY KEY CLUSTERED
(
[CreateTime]
) ON [ps_RegMail]([CreateTime])
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
--如果原来的表里有主键哪就要执行下面语句:
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epQ4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epalter table RegEmail drop constraint PK_RegEmail--将表的主键删除
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep--查寻数据所在文件组
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7epSELECT *, $PARTITION.[pf_RegMail](CreateTime) AS PF FROM RegEmail
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep
Q4L2u8Vnm69c0wK7KgbGSsHNsVgY89f8YY4mj7ep