mysql创建分区表sql_为sql server进行表分区

为sql server进行表分区 最近项目中数据量超过的千万级别,一个普通单表查询也慢的要命,对客户来说长时间的等待是不能容忍的。于是想尽各种办法对数据库进行优化,包括索引,单表查询等等。但结果都不近人意。最终选择对单表进行分区。经过测试,效率确实提

为sql server进行表分区

最近项目中数据量超过的千万级别,一个普通单表查询也慢的要命,,对客户来说长时间的等待是不能容忍的。于是想尽各种办法对数据库进行优化,包括索引,单表查询等等。但结果都不近人意。最终选择对单表进行分区。经过测试,效率确实提高了不少。

创建分区表一般包括四个步骤。

1:为分区创建文件组和文件

2:设计分区函数

3:设计分区架构

4:创建分区表

(1) 创建文件组和文件可以用sql创建,也可以通过管理工具创建具体方法如下:

1:管理工具:

打开Management Studio,选择要操作的数据库右键-属性-文件/文件组。根据相应的提示创建即可

2:通过sql创建

创建文件组:ALTER DATABASE Mytest ADD FILEGROUP MytestFileGroup ,其中Mytest是当前操作的数据库,MytestFileGroup是文件组名称

创建文集并将文件添加到文件组:

ALTER DATABASE Mytest ADD FILE

(

FILEGROWTH=1MB,

NAME='Mytest0' ,

FILENAME='C:\data\Mytest0.NDF',

SIZE=3MB

)TO FILEGROUP MytestFileGroup

通过一上操作,我们已经创建了一个名为MytestFileGroup的文件组以及文件组下面的文件Mytest0.NDF,文件的存放位置在c盘的data文件夹下。可以将不同文件存放   在不同的磁盘下面,这样可以提高IO效率,增加查询速度。

(2) 创建完成文件组和文件之后我们便可以设计分区函数了。直接上sql:

CREATE PARTITION FUNCTION MytestPartFunction (INT)

AS RANGE RIGHT

FOR VALUES

(2000000,4000000,6000000,8000000,10000000,12000000,14000000,16000000,18000000,20000000)

其中MytestPartFunction是函数名称。RANGE RIGHT表示分区的边界处理方式,这里RIGHT表示以右边界为准,既边界值分到右边的分区中。

分区依据是根据INT类型的值。

(3)创建完分区函数后,就要进行分区架构设计了。分区架构根据分区函数将不同的分区对应到不同的文件组。以达到不同分区数据存放到不同文件。分区架构代码如下:

CREATE PARTITION SCHEME MytestPartFunction

AS PARTITION MytestPartFunction

TO

(MytestFileGroup0,MytestFileGroup1,MytestFileGroup2,MytestFileGroup3,MytestFileGroup4,MMytestFileGroup5,MytestFileGroup6,MytestFileGroup7,MytestFileGroup8,MytestFileGroup9,MytestFileGroup10)

MytestPartFunction 是分区架构名称。MytestPartFunction是刚刚创建的分区函数名称,这里表示分区架构是以该函数进行分区。后面的MytestFileGroup0-MytestFileGroup10分别代表将不同的区域内的数据存放到不同的文件组。

(4) 创建完成分区函数和分区架构之后,就可以创建分区表了。创建分区表跟创建普通的表差不多。这里用代码实现如下:

create table UserInfo (

ID int identity,

UserCode nvarchar(50) not null,

UserName  nvarchar(50) not null

) ON MytestPartFunction(ID)

后面的MytestPartFunction就是分区架构。其中括号中的ID表示以ID作为分区依据。

这样一个完整的分区表就完成了。其中有些细节没有说明。以后慢慢完善吧。本人对数据库了解的不太多,大部分东西都是从网上现找的,可能其中有些不足。恳请大家指正。

posted on

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值