SQL Server单表已700w+将普通表转换成分区表

时间:2023-03-09 03:09:27
SQL Server单表已700w+将普通表转换成分区表
最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话。下面简要说一下将普通表转为分区表的步骤。
一、创建文件组
打开SQL Server Management Studio,在相关数据库项右键属性,进入数据库属性页,选择文件组选项SQL Server单表已700w+将普通表转换成分区表,添加所要的文件组 SQL Server单表已700w+将普通表转换成分区表
二、创建文件
数据库属性页,选择文件选项SQL Server单表已700w+将普通表转换成分区表,添加文件 。
添加文件时,需要选择上一步添加的对应文件组
SQL Server单表已700w+将普通表转换成分区表
三、删除普通表中的聚集索引,因为分区表是以某个字段为分区条件,所以,除了这个字段以外不能再存在其他聚集索引的。要想将普通表转换成分区表,就必须要先删除原表中聚集索引,然后再创建一个新的聚集索引,以此聚集索引中创建分区方案
  1. --删掉主键
  2. ALTER TABLE testTab DROP constraint PK_testTab
  3. --创建主键,但不设为聚集索引
  4. ALTER TABLE testTab ADD CONSTRAINT PK_testTab  PRIMARY KEY NONCLUSTERED
  5. (
  6. [ID] ASC
  7. ) ON [PRIMARY]
四、创建一个分区函数
  1. --创建一个分区函数
  2. CREATE PARTITION FUNCTION part_month_func_range_test(datetime)
  3. AS RANGE RIGHT FOR VALUES (
  4. '2017-7-1 00:00:00',
  5. '2017-8-1 00:00:00',
  6. '2017-8-1 00:00:00',
  7. '2017-9-1 00:00:00',
  8. '2017-10-1 00:00:00',
  9. '2017-11-1 00:00:00',
  10. )
五、创建一个分区方案
  1. CREATE PARTITION SCHEME partschSale
  2. AS PARTITION part_month_func_range_test
  3. TO (
  4. FC201706,
  5. FC201707,
  6. FC201708,
  7. FC201709,
  8. FC201710,
  9. FC201711,
  10. FC201712
  11. )
注意:方案中文件组比函数中要多一个
六、按分区方案创建聚集索引