sql server分区表基础(一)

-- =============================================
-- Author:		余波(杭州)
-- Create date: 2011/09/15
-- Description:	分区表创建基础
-- =============================================
-- 分区表创建的基本步骤是
-- 1、创建文件组
-- 2、在文件组上新增文件,只有有文件的文件组才能创建分区方案
-- 3、创建分区函数 partition function
-- 4、创建分区方案
-- 5、创建分区使用方案的表

------------------创建文件组---------------------
alter database start
add filegroup f1   ----创建名为f1的文件组

alter database start
add filegroup f2   ----创建名为f2的文件组

alter database start
add filegroup f3   ----创建名为f3的文件组

alter database start
add filegroup f4   ----创建名为f4的文件组

----------------在文件组上新增文件----------------
alter database start
add file
(
	name=af1,
	filename='c:\a_f1.ndf',
	size=1MB
)
to filegroup f1
GO
alter database start
add file
(
	name=af2,
	filename='c:\a_f2.ndf',
	size=1MB
)
to filegroup f2
GO
alter database start
add file
(
	name=af3,
	filename='c:\a_f3.ndf',
	size=1MB
)
to filegroup f3
GO
alter database start
add file
(
	name=af4,
	filename='c:\a_f4.ndf',
	size=1MB
)
to filegroup  f4
go
----------------创建分区函数----------------------
create partition function p_test(datetime)
as range left              
for values('2001-01-02','2003-01-01','2005-01-01')
-----四个分区,left表示三个分割点属于左边区间

----------------创建分区方案----------------------
create partition scheme s_test
as partition p_test
to (f1,f2,f3,f4)

---------------创建分区方案表---------------------
create table t_test
(
	s_id int not null identity(1,1),
	s_page varchar(100) not null,
	s_date datetime not null,
	constraint pk_s
	primary key(s_date)   ----------分区列必须是聚集索引列
) on [s_test](s_date)

--------------查看当前的数据在哪个分区中------------
insert into t_test(s_page,s_date)
select '1','2000-02-01'
union
select '1','2001-02-01'
union
select '1','2003-02-01'
union
select '1','2006-02-01'

select s_date,$partition.p_test(s_date) as partition from t_test
/* 结果
s_date	partition
2000-02-01 00:00:00.000	1
2001-02-01 00:00:00.000	2
2003-02-01 00:00:00.000	3
2006-02-01 00:00:00.000	4
*/


-------------增加新的分区-----------------------------
---增加新的分区你可以将的分区加到新的文件组里面(也可以是使用过的)
alter partition scheme s_test   -----先为分区方案分配文件组
next used [f1]

alter partition function p_test()  ------新增分割点
split range('2004-01-01')

insert into t_test(s_page,s_date)
select '1','2004-02-01'

select s_date,$partition.p_test(s_date) as partition from t_test
/*结果
s_date	partition
2000-02-01 00:00:00.000	1
2001-02-01 00:00:00.000	2
2003-02-01 00:00:00.000	3
2004-02-01 00:00:00.000	4
2006-02-01 00:00:00.000	5
*/


--------------合并/删除分割点-----------------
alter partition function p_test()
merge range('2004-01-01')

select s_date,$partition.p_test(s_date) as partition from t_test

/*结果
	s_date	partition
2000-02-01 00:00:00.000	1
2001-02-01 00:00:00.000	2
2003-02-01 00:00:00.000	3
2004-02-01 00:00:00.000	3
2006-02-01 00:00:00.000	4
*/

 注:不管是合并分区或者新增分区,一次只能操作一个分区,不能多个分区同时合并或新增

  

你可能感兴趣的:(sql server分区表基础(一))