sql server分区表基础(二)

-- =============================================   
-- Author:      余波(杭州)   
-- Create date: 2011/09/15   
-- Description: 分区表创建基础   
-- =============================================   
-- 分区函数和分区方案的创建,详见sql server分区表基础(一)   

-----------创建没有聚集索引的表之后,新增聚集索引再建分区表-----------
----新建表
create table s_test1
(
	id int,
	s_date datetime
)
-----新增聚集索引
create clustered index c_test on s_test1(s_date) on s_test(s_date)

-------新增测试数据进行是否分区测试
insert into s_test1
select 1,'2010-01-01'

select s_date,$partition.p_test(s_date) from s_test1


------------删除聚集索引后新增聚集索引,再建分区表--------------------
------新建表
create table t_test2
(
	id int not null identity(1,1),
	s_date datetime,
	constraint pk_t
	primary key(id) 
)
------删除主键约束
alter table t_test2 drop constraint pk_t

---新增非聚集索引的主键约束
alter table t_test2
add constraint pk_t primary key nonclustered(id) 

-------新增分区列的聚集索引
create clustered index c on t_test2(s_date) on[s_test](s_date)

-------新增测试数据进行是否分区测试
insert into s_test1
select 1,'2010-01-01'

select s_date,$partition.p_test(s_date) from s_test1

 

-----把分区移动到不同的表,实现毫秒级的数据转移
-----分区移动要遵循下面的规则---------
------------分区表到分区表------------
-- 1、目标表需要有聚集索引
-- 2、目标表要转换的分区要为空
-- 3、目标表的字段名要与源表相同
-- 4、目标表和源表要转移分区所在的文件组要一致
-- 5、对与非分区表向分区表转移,转移的数据要在目标分区表的规则之内
-- 6、对与分区表向非分区表转移,非分区表必须为空表
create table t_test_his  --------历史表的字段名称要与原表一致,不然会报错
(
	id int not null identity(1,1),
	s_date datetime not null,
	constraint pk_test_his
	primary key(s_date)
) on[s_test](s_date)
-------------t_test表详见第一篇
alter table t_test switch partition 3 to t_test_his partition 3  ----t_test_his表中3分区必须是空的,不然会报错

select s_date,$partition.f_test(s_date) as partition from t_test_his  ---查询结果
/*
	s_date	partition
2006-02-01 00:00:00.000	3
*/



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值