sql 分区代码

 if exists (select * from sys.databases where name = 'test_1')
drop database test_1
go

create database test_1 on primary
( NAME = N'test_1', FILENAME = N'g:/sqltest/fenqv/test_1.mdf' , SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
filegroup [test_a]
(name = N'test_a',filename= N'g:/sqltest/fenqv/test_a.ndf',size = 1024kb,maxsize = unlimited,filegrowth = 1024kb),
filegroup [test_b]
(name = N'test_b',filename = N'g:/sqltest/fenqv/test_b.ndf',size = 1024kb,maxsize = unlimited,filegrowth=1024kb)
log on
(name = N'test_log',filename = N'g:/sqltest/fenqv/test_log.ldf',size = 5000kb,maxsize = 5gb,filegrowth=10%)

USE test_1
GO

--检查是否存在分区函数 在则删除
if exists(select * from sys.partition_functions where name = N'test_partition')
drop partition function [test_partition]
go

--创建分区函数
create partition function test_partition(int)
as
range left for values(1000)
go

/**//*看分区方案是否存在,若存在先drop掉*/
if exists (select * from sys.partition_schemes where name = N'test_scheme')
drop partition scheme test_scheme
go

--创建分区方案,分区方案需要指定一个分区函数,并指定在分区函数中分的区需要放在哪一个文件组上
create partition SCHEME test_scheme
as
partition test_partition to (test_a,test_b)
go

--创建分区表
if exists (select * from sys.objects where name = N'student')
drop table student
go

create table student
(
  id int identity(1,1) not null,
  name varchar(10) not null,
  class int not null,
  grade int
)on test_scheme(class)

--随便插入几条数据
insert into student values ('AQU',10,100); -- 这条数据在A分区上
insert into student values ('AQU_边界',1000,89); -- 这边数据也在A分区上是个边界,因为我们上面在函数中指定的是RANGE LEFT,所以1000在A分区上
insert into student values ('BQU',1001,90); -- 这一条肯定是在B分区上了。

--最后看看结果。$partition.分区函数(分区列)可以返回某一行所在的分区序号
select *,分区序号 = $partition.test_partition(class) from student
GO

 

 

以上代码直接复制过去,查询编辑器了,直接执行即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值