SQL分区表的使用详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档