关于SQL分区查询

来源:互联网 发布:还书数据流程图 编辑:程序博客网 时间:2024/05/19 12:29

建立文件组

 

alter database TestBao add filegroup TextFG1
alter database TestBao add filegroup TextFG2
alter database TestBao add filegroup TextFG3
go

 

在文件组中添加文件,一个文件组可以包含多个文件,每个文件代表的是某一个表的分表。

例如:一个数据库中有两个表需要分表,就可以再每个分组中添加两个分表,分别对应这两个表。

分组最好放在不同的磁盘下,可以充分发挥IO操作速度。


alter database TestBao add file(name=N'TextDataFile1', filename=N'D:/SQL/TextDataFile1.ndf',
size=3072KB, filegrowth=1024KB ) to filegroup TextFG1
alter database TestBao add file(name=N'TextDataFile2', filename=N'D:/SQL/TextDataFile2.ndf',
size=3072kb, filegrowth=1024kb) to filegroup TextFG2
alter database TestBao add file(name=N'TextDataFile3', filename=N'D:/SQL/TextDataFile3.ndf',
size=3072kb, filegrowth=1024kb) to filegroup TextFG3

 

创建分区函数,分区依据后边的时间点,将表分为3个区,分别放在不同的分区表中


create PARTITION FUNCTION customer_partfunc (int)
AS RANGE RIGHT FOR VALUES (500000, 1000000)

 

创建分区方案,将分区函数和分组对应起来

CREATE PARTITION SCHEME customer_partscheme
 AS PARTITION customer_partfunc TO (TextFG1, TextFG2, TextFG3)

 

创建表


CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int)
 ON customer_partscheme (CustomerNumber)

 

可以创建聚集索引来提高性能

 

表创建好了之后,就可以导入数据了。 


declare @index int
set @index=602836

while(@index<664675)
begin
set @index=@index+1
insert into customers values('aaa'+convert(varchar,@index),'bbb'+convert(varchar,@index),@index)
end


查询

select * from customers where CustomerNumber=664667

 

 

可以测一下性能

原创粉丝点击