SQL分区表的使用详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--创建新文件组,最好新建一个文件组
ALTERDATABASE test1 ADDFILEGROUP test1_FileGroup1
--创建分区函数
CREATEPARTITIONFUNCTION FN_Employee_Birthday(datetime)
ASRANGE RIGHT FORVALUES
(
'20110101',
'20120101',
'20130101'
)
--根据分区函数的时间分段点创建分区文件,分区文件最好与数据库文件在不同的磁盘上,提高磁盘的读写速度
ALTERDATABASE test1
ADDFILE
(NAME= N'Employee_20110101',FILENAME=
N'f:\data\Employee_20110101.ndf',SIZE=5MB,MAXSIZE=UNLIMITED,FILEGROWTH= 5MB)
TOFILEGROUP test1_FileGroup1
ALTERDATABASE test1
ADDFILE
(NAME= N'Employee_20120101',FILENAME=
N'f:\data\Employee_20120101.ndf',SIZE=5MB,MAXSIZE=UNLIMITED,FILEGROWTH= 5MB)
TOFILEGROUP test1_FileGroup1
ALTERDATABASE test1
ADDFILE
(NAME= N'Employee_20130101',FILENAME=
N'f:\data\Employee_20130101.ndf',SIZE=5MB,MAXSIZE=UNLIMITED,FILEGROWTH= 5MB)
TOFILEGROUP test1_FileGroup1
--创建分区架构,将分区函数应用到该架构上
CREATEPARTITIONSCHEME SC_Employee_Birthday
AS
PARTITION FN_Employee_Birthday
ALL TO(test1_FileGroup1)
------------在已存在的数据表创建分区表-----------------
--将已存在的数据表应用到该分区方案中,可以采用删除需分区字段的索引的方式进行,在这以(Birthday)对该表进行分区
--drop index Employee.该分区字段上的索引 --删除该分区字段上的索引
--按分区方案创建索引
createindex该分区字段上的索引
on Employee(Birthday)
on SC_Employee_Birthday(Birthday)
--对于分区表中存在聚集索引,最好将其删除重建
ALTERTABLE Employee
--DROP CONSTRAINT PK_Employee
--重建聚聚集索引主建
ALTERTABLE Employee
--ADD CONSTRAINT PK_Employee
--PRIMARY KEY CLUSTERED(RID)
--查询分区信息(查询该表是不是分区成功)
SELECT*FROM SYS.PARTITIONS WHERE OBJECT_ID=OBJECT_ID('Employee')
--查询某段时间的数据位于哪个分区
select*,$PARTITION.FN_Employee_Birthday(Birthday)from Employee where Birthday>='2012-01-01'
--将已存在的数据表应用到该分区方案中,可以采用删除需分区字段的索引的方式进行,如本例中我用(Birthday)对该表进行分区
dropindex Employee.该分区字段上的索引--删除该分区字段上的索引
--按分区方案创建索引
createindex该分区字段上的索引
on Employee(Birthday)
on SC_Employee_Birthday(Birthday)
--对于分区表中存在聚集索引,最好将其删除重建
ALTERTABLE Employee
--DROP CONSTRAINT PK_Employee
--重建聚聚集索引主建
ALTERTABLE Employee
--ADD CONSTRAINT PK_Employee
--PRIMARY KEY CLUSTERED(RID)
----------------------在未创建的数据表上创建分区-----------------
--创建分区表
createtable Employee(
RID intprimarykey,
Birthday datetime notnull
)on SC_Employee_Birthday(Birthday)
-- 创建聚集分区索引
createclusteredindex该分区字段上的索引
on Employee(Birthday)
--为分区表设置主键
altertable Employee
addconstraint PK_Employee primarykey(RID)