SqlServer分区表的创建

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

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  




























阅读更多

没有更多推荐了,返回首页