对于一个已经存在大量数据,并且表中含有自动增加字段的表,做分区就比较麻烦了,现在就介绍一下如何将包含大量数据的表进行分区的方法及步骤: 1.创建分区函数 CREATE PARTITION FUNCTION [DBA_PFN_NumberID](int) AS RANGE LEFT FOR VALUES (200000, 400000, 600000, 800000, 1000000, 1200000, 1400000, 1600000, 1800000, 2000000, 2200000) 2.创建分区方案 CREATE PARTITION SCHEME [DBA_PSCH_NumberID] AS PARTITION [DBA_PFN_NumberID] All TO ([PRIMARY]) 3.将分区应用到表和索引上,可能会执行成功,如果成功那么分区就完成了,如果没有成功则继续执行以下步骤 4.将原表中数据导入到一个备份表(因为数据量超过35万就可能对表直接修改为分区了) SELECT * INTO NEWTABLE FROM TABLENAME 5.删除原表中数据 TRUNCATE TABLE TABLENAME 6.将旧表和索引设置为分区(在表设计状态的属性中) 7.将备份表中的数据导回到原表中 set identity_insert TableName on insert ib_salesnumber(字段1,字段2...) select 字段1,字段2... from NewTable --必须指定列名 set identity_insert TableName off 7.分区完毕,删除备份表 DROP Table NewTable
1.创建分区函数
CREATE PARTITION FUNCTION [DBA_PFN_NumberID](int) AS RANGE LEFT FOR VALUES (200000, 400000, 600000, 800000, 1000000, 1200000, 1400000, 1600000, 1800000, 2000000, 2200000)
2.创建分区方案
CREATE PARTITION SCHEME [DBA_PSCH_NumberID] AS PARTITION [DBA_PFN_NumberID] All TO ([PRIMARY])
3.将分区应用到表和索引上,可能会执行成功,如果成功那么分区就完成了,如果没有成功则继续执行以下步骤
4.将原表中数据导入到一个备份表(因为数据量超过35万就可能对表直接修改为分区了)
SELECT * INTO NEWTABLE FROM TABLENAME
5.删除原表中数据
TRUNCATE TABLE TABLENAME
6.将旧表和索引设置为分区(在表设计状态的属性中)
7.将备份表中的数据导回到原表中
set identity_insert TableName on
insert ib_salesnumber(字段1,字段2...) select 字段1,字段2... from NewTable --必须指定列名
set identity_insert TableName off
7.分区完毕,删除备份表
DROP Table NewTable