首页 > 代码库 > 对已有表进行分区
对已有表进行分区
目标数据库:BOEE
分区表:CB_PRODUCT
分区字段:ID
主要步骤:对于已经存在的表,我们可以采取以下步骤来对其创建分区表
1.添加文件组
2.设置默认的文件组
3.创建分区函数
4.创建分区架构并关联到分区函数
5.删除已经存在的聚集索引(我这里是主键,取消主键约束即删除了索引)
6.基于分区架构重建聚集索引
--修改数据库,创建文件组ALTER DATABASE BOEEADD FILEGROUP FG10000GOALTER DATABASE BOEEADD FILEGROUP FG20000GOALTER DATABASE BOEEADD FILEGROUP FG30000GO--添加次要数据文件ALTER DATABASE BOEEADD FILE( NAME=PRODUCT10000, FILENAME=N‘D:\DATA\PRODUCT10000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 ),( NAME=PRODUCT20000, FILENAME=N‘D:\DATA\PRODUCT20000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 ),( NAME=PRODUCT30000, FILENAME=N‘D:\DATA\PRODUCT30000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 )TO FILEGROUP FG10000GO--添加次要数据文件ALTER DATABASE BOEEADD FILE( NAME=PRODUCT60000, FILENAME=N‘E:\DATA\PRODUCT60000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 ),( NAME=PRODUCT40000, FILENAME=N‘E:\DATA\PRODUCT40000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 ),( NAME=PRODUCT50000, FILENAME=N‘E:\DATA\PRODUCT50000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 )TO FILEGROUP FG20000GO--添加次要数据文件ALTER DATABASE BOEEADD FILE( NAME=PRODUCT70000, FILENAME=N‘G:\DATA\PRODUCT70000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 ),( NAME=PRODUCT80000, FILENAME=N‘G:\DATA\PRODUCT80000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 ),( NAME=PRODUCT90000, FILENAME=N‘E:\DATA\PRODUCT90000.ndf‘, SIZE=5, MAXSIZE=500, FILEGROWTH=1 )TO FILEGROUP FG30000GO--设置默认的文件组ALTER DATABASE BOEEMODIFY FILEGROUP FG10000 DEFAULTGO--创建分区函数CREATE PARTITION FUNCTION PRODUCT_FUC(INT) AS RANGE LEFT FOR VALUES(10000,20000)GO--创建分区方案CREATE PARTITION SCHEME PRODUCT_SCHEMEAS PARTITION PRODUCT_FUC TO(FG10000,FG20000,FG30000)GO--查看cb_product 索引情况exec sp_helpindex N‘cb_product‘GO--解除主键约束alter table cb_productdrop constraint PK_cb_productGO---重建索引(删除聚集索引以及需要分区字段的索引后重建该类索引,表被按分区值将分配到各文件组)CREATE CLUSTERED INDEX IDX_PRODUCT_ID ON CB_PRODUCT(ID) ON PRODUCT_SCHEME(ID)GO--ALTER TABLE CB_PRODUCTADD CONSTRAINT PK_PRODUCT_ID PRIMARY KEY(ID)GOSELECT * FROM SYS.PARTITIONSGOselect $partition.PRODUCT_FUC(ID) as partition_num,count(*) as record_numfrom CB_PRODUCT group by $partition.PRODUCT_FUC(ID)order by $partition.PRODUCT_FUC(ID)
本文章仅供参考,没有过多的解释
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。