<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678


转载请保留链接

我的标签

随笔档案

宝宝孕历

  • 宝宝孕历
  • 宝宝孕历准爸爸准妈妈的好朋友-获得孕期每月每周的注意事项和温馨提示,记录宝宝诞生期间甜酸苦辣的甜蜜艰辛
  • 当当卓越比价程序
  • 用当当卓越比价程序,网上买书省钱省时。java与模式可以省10将近块钱
  • 怀孕书,育儿书,孕妇装
  • 宝宝孕历孕前准备书,怀孕书,育儿书,孕妇装,靠枕等新鲜出炉了
  • 孕期知识
  • 孕期的相关知识
  • 孕味广场
  • 孕期论坛,讨论怀孕,孕期注意事项,孕检等

最新随笔

最新评论

阅读排行榜

评论排行榜

代码加注释,希望对初学者有用。

USE [master]
GO
if exists (select * from sys.databases where name = 'Test_1')
drop database Test_1
GO
--创建新库,要演练分区所以我们会多创建两个文件组Test_A,Test_B,以便在后面的分区方案中使用。
CREATE DATABASE [Test_1] ON  PRIMARY 
( NAME 
= N'test_1', FILENAME = N'D:\sqldata\test_1.mdf' , SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
 FILEGROUP 
[test_A] 
( NAME 
= N'Test_A', FILENAME = N'D:\sqldata\test_A.ndf' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
FILEGROUP 
[test_B] 
( NAME 
= N'Test_B', FILENAME = N'D:\sqldata\test_B.ndf' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 
LOG ON 
( NAME 
= N'Test_log', FILENAME = N'D:\sqldata\Test_log.ldf' , SIZE = 7616KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
 COLLATE Chinese_PRC_CI_AS
GO
USE [Test_1]
GO
--若分区函数存在则先drop掉
IF  EXISTS (SELECT * FROM sys.partition_functions WHERE name = N'test_partition')
DROP PARTITION FUNCTION [test_partition]
GO
/*创建分区函数给后面的分区方案使用,分区函数很简单就是指定一个范围确定在某个值为什么的时候放在那个分区上*/
--新建一个简单的分区函数,该函数以1000为界分两个区
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 object_id('student','U'is not null
drop table student;
go
create table student
(
    id 
int identity(1,1not null,
    name 
varchar(10not null,
    class 
int not null,
    grade 
int
on test_scheme(class) --在此处指定该表要使用的分区方案,并将指定分区依据列
go
--随便插入几条数据
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分区上了。

go
--最后看看结果。$partition.分区函数(分区列)可以返回某一行所在的分区序号
select *,分区序号 = $partition.test_partition(class) from student
GO
posted on 2008-05-07 11:32 玉开 阅读(1146) 评论(12)  编辑 收藏 网摘 所属分类: 数据库sql server

FeedBack:
#1楼 2008-05-07 11:54 wingoo      
有个问题,分区表创建之后,是不是所有原来的curd操作的语句都要变化了?
  回复  引用  查看    
#2楼 2008-05-07 11:57 winzheng      
学习。。。
  回复  引用  查看    
#3楼[楼主] 2008-05-07 12:27 玉开      
@wingoo
操作语句都不需要变化。

  回复  引用  查看    
#4楼[楼主] 2008-05-07 12:29 玉开      
分区是为了改善大表大数据量情况下的性能,他对于curd操作来说是透明的。不必考虑
  回复  引用  查看    
#5楼 2008-05-07 12:35 wingoo      
@玉开 知道了,谢谢

  回复  引用  查看    
#6楼 2008-05-07 14:23 sunrisex[未注册用户]
mssql 2000可以吗?
  回复  引用    
#7楼[楼主] 2008-05-07 15:12 玉开      
@sunrisex
2000不可以分区,只能用户定义一系列的表,例如student_2000,student_2001;然后自己在程序中根据逻辑判断来插入不同表中。

  回复  引用  查看    
#8楼 2008-05-07 17:30 Cheney Shue      
索引能分区吗 ?
  回复  引用  查看    
#9楼[楼主] 2008-05-07 17:37 玉开      
@Cheney Shue
可以分区,在分区表上最好可以做到索引与分区对齐。

具体请看msdn

  回复  引用  查看    
#10楼 2008-11-27 16:03 ITAres      
不错,跟着你学mssql
  回复  引用  查看    
#11楼[楼主] 2008-11-27 16:07 玉开      
@ITAres
一起学了

  回复  引用  查看    
学习了
  回复  引用  查看    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1186530




相关文章:

相关链接: