懂得放弃,才会有新的收获!

简单易懂的MS sql 2005 表达式分区

By weisnet On 2010-07-19 At 10:06 View:68

首先建立文件组:

SQL
  1. alter database TestDB add filegroup fg1;
  2. alter database TestDB add filegroup fg2;
  3. alter database TestDB add filegroup fg3;
  4. alter database TestDB add filegroup fg4;

  
SQL
  1. alter DATABASE [TestDB] add file
  2. ( NAME = 'fg1', FILENAME = N'D:\sqldata\fg1.ndf') to FILEGROUP [fg1];
  3. alter DATABASE [TestDB] add file
  4. ( NAME = 'fg2', FILENAME = N'D:\sqldata\fg2.ndf') to FILEGROUP [fg2];
  5. alter DATABASE [TestDB] add file
  6. ( NAME = 'fg3', FILENAME = N'D:\sqldata\fg3.ndf') to FILEGROUP [fg3];
  7. alter DATABASE [TestDB] add file
  8. ( NAME = 'fg4', FILENAME = N'D:\sqldata\fg4.ndf') to FILEGROUP [fg4];
  9. go

 
建立分区函数:
SQL
  1. create partition function partifunc(int)
  2. as range right for values (250000,500000,750000);

 
建立分区方案:
SQL
  1. create partition scheme test_scheme
  2. as partition [partifunc] to (fg1,fg2,fg3,fg4)
  3. go

 
建立一个新表在test_scheme方案上
SQL
  1. create table Partitbl
  2. (
  3.     pid int identity(1,1) not null,
  4.     pname varchar(50) not null,
  5.     classid int
  6. ) on test_scheme (classid);

 
写入一些1000000数据:
SQL
  1. declare
  2.     @nid int;
  3. begin
  4. set @nid="1;"
  5. while (@nid <= 1000000)
  6. begin
  7.     insert into Partitbl(pname,classid) values('PName'+str(@nid),@nid);
  8.     set @nid = @nid+1;
  9. end
  10. end

 
查询第四分区数据:
SQL
  1. select * from partitbl where $partition.partifunc(classid) = 4 /*第四分区*/

 
新建一个分区:
SQL
  1. alter database TestDB add fileGroup fg5;
  2. alter database TestDB add file (NAME = 'fg5',filename="'d:\sqldata\fg5.ndf') to filegroup fg5;
  3. -- next used fg5
  4. alter partition scheme test_scheme
  5. next used fg5
  6. go
  7. alter partition function partifunc()
  8. split range(1000000)
  9. go

 
写入数据并查询第五分区:
SQL
  1. declare
  2.     @nid int;
  3. begin
  4. set @nid="1000001;"
  5. while (@nid <= 1250000)
  6. begin
  7.     insert into Partitbl(pname,classid) values('PName'+str(@nid),@nid);
  8.     set @nid = @nid+1;
  9. end
  10. end
  11. select * from partitbl where $partition.partifunc(classid) = 5

 

·上一篇:Javascript摸拟自由落体与上抛运动
·下一篇:MS SQL Server 2005在已有表上建分区

for this post

 
 

Leave a Reply

赶快抢个沙发坐坐!
请先 登陆  还没帐号

Hot Posts Powered by weiseditor

  • Add to Google

Friend links