SQL SERVER2005中将普通表修改为分区表

前提是你的表上有聚焦索引(一般主键默认就是聚焦索引)

而且改的时候要把普通索引删除掉(因为改是通过删除聚焦索引实现数据切换的, 所以不删除普通索引会导致普通索引被重建, 而切换到分区表再建立聚焦索引的时候又会导致普通索引重建一次, 所以删除普通索引再重建可以避免两次重建普通索引)

 


USE tempdb
GO

-- 测试表
CREATE TABLE dbo.tb(
id int,
CONSTRAINT PK_id PRIMARY KEY CLUSTERED(
id)
)
INSERT dbo.tb
SELECT 1 UNION ALL
SELECT 10
GO

-- 切换为分区表
-- 分区函数
CREATE PARTITION FUNCTION PF_test(int)
AS RANGE LEFT
FOR VALUES(5)

-- 分区架构
CREATE PARTITION SCHEME PS_test
AS PARTITION PF_test
ALL TO(
[PRIMARY])

-- 切换到分区表
ALTER TABLE dbo.tb
DROP CONSTRAINT PK_id
WITH(
MOVE TO PS_test(id))

 

上面的示例建立测试表 dbo.tb , 并切换到分区表

切换完成后, 可以查询 dbo.tb, 并检查其执行计划来确定是否使用了分区信息, 以此来确定是否正确切换到了分区表

最后可以用下面的语句删除测试

 

-- 删除测试
DROP TABLE dbo.tb
DROP PARTITION SCHEME PS_test
DROP PARTITION FUNCTION PF_test

分区键列必须是主键的一部分,联机帮助上有说明的

是【创建分布式分区视图】中的一句话吧,而不是说创建分区表所用的分区列一定要是主键的一部分
在(create)创建分区表时,对分区列要求很低,但是便于性能优化,最好是聚集索引的一部分。
如果alter将已有表变为分区表的话,应该是将分区列加入到聚集索引中
如果是分区索引:分区列包含在聚集索引/唯一约束/唯一索引的键列中

 

 

转载于:https://www.cnblogs.com/kevin1988/p/3573182.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值