SqlServer分区表的创建

原创 2018年04月15日 10:37:20

说明:当数据库中的表和索引变得非常大时,我们可以利用分区表来将数据拆分,使数据分的更小、更容易管理,并且可以提升数据表的性能和可用性;并且创建完的分区表在使用中并没有什么太大的区别。

1、创建三个文件组
ALTER DATABASE [MyTest] ADD FILEGROUP FileOne;
ALTER DATABASE [MyTest] ADD FILEGROUP FileTwo;
ALTER DATABASE [MyTest] ADD FILEGROUP FileThree;

2、为每个文件组增加一个数据文件,分区文件最好放在不同的磁盘上,可以提高磁盘读写速度
ALTER DATABASE [MyTest]
ADD FILE(
NAME=N'FILE1',
FILENAME=N'D:\DB\FileOne\FILE1.ndf',
SIZE=5MB, MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
TO FILEGROUP FileOne --文件组
GO

ALTER DATABASE [MyTest]
ADD FILE(
NAME=N'FILE2',
FILENAME=N'D:\DB\FileTwo\FILE2.ndf',
SIZE=5MB, MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
TO FILEGROUP FileTwo--文件组
GO

ALTER DATABASE [MyTest]
ADD FILE(
NAME=N'FILE3',
FILENAME=N'D:\DB\FileThree\FILE3.ndf',
SIZE=5MB, MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
TO FILEGROUP FileThree--文件组
GO

3、创建分区函数

CREATE PARTITION FUNCTION IDKeyRange(int)
AS RANGE LEFT FOR VALUES
(5,10)  --数据将分为三部分:1-5,6-10,11-N
GO

4、创建分区方案

CREATE PARTITION SCHEME [IDKeyRangeScheme] AS PARTITION IDKeyRange 
TO (FileOne, FileTwo, FileThree)  --数量要与分区函数中的数量(分区函数中将数据分成了三段)一致

5、创建分区表

CREATE TABLE TempTable
(
ID INT NOT NULL,
NAME NVARCHAR(20) NOT NULL
)
ON IDKeyRangeScheme(ID)
GO

6、往数据库中插入12条数据

INSERT INTO TempTable(ID,NAME) VALUES(1,'11');
INSERT INTO TempTable(ID,NAME) VALUES(2,'22');
INSERT INTO TempTable(ID,NAME) VALUES(3,'33');
INSERT INTO TempTable(ID,NAME) VALUES(4,'44');
INSERT INTO TempTable(ID,NAME) VALUES(5,'55');
INSERT INTO TempTable(ID,NAME) VALUES(6,'66');
INSERT INTO TempTable(ID,NAME) VALUES(7,'77');
INSERT INTO TempTable(ID,NAME) VALUES(8,'88');
INSERT INTO TempTable(ID,NAME) VALUES(9,'99');
INSERT INTO TempTable(ID,NAME) VALUES(10,'1100');
INSERT INTO TempTable(ID,NAME) VALUES(11,'1111');
INSERT INTO TempTable(ID,NAME) VALUES(12,'1122');

7、查询表中数据。看看并显示数据所在区号

SELECT *,$PARTITION.IDKeyRange(ID) AS 区号 FROM TempTable 



8、查询某个分区下面的所有数据


SELECT *,$PARTITION.IDKeyRange(ID) AS 区号 FROM TempTable WHERE $PARTITION.IDKeyRange(ID)=1  




























sqlserver 创建分区表

我们知道很多事情都存在一个分治的思想,同样的道理我们也可以用到数据表上,当一个表很大很大的时候,我们就会想到将表拆 分成很多小表,查询的时候就到各个小表去查,最后进行汇总返回给调用方来加速我们的查询...
  • stargc
  • stargc
  • 2016-09-18 10:39:59
  • 1888

sql server 创建分区表

如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。       1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉...
  • isoleo
  • isoleo
  • 2014-11-27 15:57:47
  • 1926

SQLSERVER2008R2创建分区表、转换分区表、交换数据

分区 表和索引的分区可以不同,但聚集索引必须和表采用相同的分区方案,必须采用相同的分区列,也就是说,如果表先创建了分区表,那么在创建分区聚集索引时,该索引必须是表的分区列,而且索引也必须按照表的分区列...
  • Rain_Gao
  • Rain_Gao
  • 2016-05-12 09:36:34
  • 2790

SQL SERVER 如何按月创建表分区?

SQL SERVER 如何按月创建表分区
  • netyeaxi
  • netyeaxi
  • 2017-07-13 19:48:42
  • 3373

sqlServer2014分区过程及建立job自动添加删除分区脚本

一、新建表同时分区1、新建表同时分区:表结构:2、选择数据库-属性3、新建文件组:将要表的分区放到单独的文件组中,非必需4、新建分区文件:尽量一个文件组对应一个分区文件,以后好维护,非必需5、准备对表...
  • yzy85
  • yzy85
  • 2016-06-13 20:40:54
  • 1533

MS SQL Server:分区表、分区索引 详解

MS SQL Server:分区表、分区索引 1. 分区表简介使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。        大型表:数据量巨大的表。     ...
  • feixianxxx
  • feixianxxx
  • 2009-08-12 13:24:00
  • 4649

SQL Server 2005教程:如何创建修改分区表和如何查看分区表(经典)

SQL Server 2005是微软在推出SQL Server 2000后时隔五年推出的一个数据库平台,它的数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的...
  • ddjj_1980
  • ddjj_1980
  • 2013-09-17 14:51:44
  • 872

创建分区表+分区表的分类+创建散列分区表+查看散列分区表分区中的数据+创建列表分区表+查看列表分区表分区中的数据

创建分区表 分区表的分类 范围分区:对数据表的某个值的范围进行分区,需要使用partition by range字句。 散列分区: 1通过hash算法均匀分布数据的一种分区类型。 2通过在...
  • zhou920786312
  • zhou920786312
  • 2017-05-30 23:53:06
  • 328

SqlServer将分区表转为普通表

查看一个表有没有被分区可以从表“右键>属性->存储(Storage)”中"Table is Partitioned "属性中看出  可以通过有对原表进行分区的向导进行表的分区设置,右键表——存储——创...
  • huxin008
  • huxin008
  • 2012-12-17 17:58:58
  • 645

SQL Server 2005中的分区表(三):将普通表转换成分区表

    在设计数据库时,经常没有考虑到表分区的问题,往往在数据表承重的负担越来越重时,才会考虑到分区方式,这时,就涉及到如何将普通表转换成分区表的问题了。    那么,如何将一个普通表转换成一个分区表...
  • smallfools
  • smallfools
  • 2009-12-03 17:01:00
  • 21261
收藏助手
不良信息举报
您举报文章:SqlServer分区表的创建
举报原因:
原因补充:

(最多只允许输入30个字)