加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SQL Server 2008将普通表转换成分区表

(2017-07-26 10:35:48)
标签:

it

sqlserver

分区表

分类: 学习资料
最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话。下面简要说一下将普通表转为分区表的步骤。

一、创建文件组
打开SQL Server Management Studio,在相关数据库项右键属性,进入数据库属性页,选择文件组选项http://s3/mw690/001kMp6qzy7cWkbaKFc12&690Server 2008将普通表转换成分区表" TITLE="SQL Server 2008将普通表转换成分区表" />

二、创建文件
数据库属性页,选择文件选项SQL <wbr>Server <wbr>2008将普通表转换成分区表,添加文件
添加文件时,需要选择上一步添加的对应文件组
http://s4/mw690/001kMp6qzy7cWkwoKTp63&690Server 2008将普通表转换成分区表" TITLE="SQL Server 2008将普通表转换成分区表" />
三、删除普通表中的聚集索引,因为分区表是以某个字段为分区条件,所以,除了这个字段以外不能再存在其他聚集索引的。要想将普通表转换成分区表,就必须要先删除原表中聚集索引,然后再创建一个新的聚集索引,以此聚集索引中创建分区方案
  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. )  

注意:方案中文件组比函数中要多一个

六、按分区方案创建聚集索引

  1. --创建一个新的聚集索引,在该聚集索引中使用分区方案  
  2. CREATE CLUSTERED INDEX CT_testTab ON Sale([inDate])  
  3. ON part_month_func_range_test([inDate])  

为表创建了一个使用分区方案的聚集索引之后,该表就变成了一个分区表了。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有