一、分区表简介:

使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。
分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。

二、创建步骤:

现有一张表L_TESTRESULT共有3千万条记录,本文主要的目的是对这张表按时间进行分区,以便提高对该表的操作效率。

1、   创建新文件组,最好新建一个文件组:

ALTER DATABASE listest ADD FILEGROUP [lisfq]

2、创建分区函数:

CREATE PARTITION FUNCTION MonthDateRange(datetime)

AS RANGE LEFT FOR VALUES

(

'20071231 23:59:59.997',

'20080630 23:59:59.997',

'20081231 23:59:59.997'

)

3、根据分区函数的时间分段点创建分区文件,分区文件最好与数据库文件在不同的磁盘上,提高磁盘的读写速度:

ALTER DATABASE listest

ADD FILE

(NAME = N'lis200712',FILENAME = N'f:/data/lis200712.ndf',SIZE = 5MB,MAXSIZE = UNLIMITED,FILEGROWTH = 5MB)

TO FILEGROUP [lisfq]

ALTER DATABASE listest

ADD FILE

(NAME = N'lis200806',FILENAME = N'f:/data/lis200806.ndf',SIZE = 5MB,MAXSIZE = UNLIMITED,FILEGROWTH = 5MB)

TO FILEGROUP [lisfq]

ALTER DATABASE listest

ADD FILE

(NAME = N'lis200812',FILENAME = N'f:/data/lis200812.ndf',SIZE = 5MB,MAXSIZE = UNLIMITED,FILEGROWTH = 5MB)

TO FILEGROUP [lisfq]

4、创建分区架构,将分区函数应用到该架构上:

CREATE PARTITION SCHEME MonthDateRangeScheme

AS

PARTITION MonthDateRange

ALL TO ([lisfq])

已创建的分区函数与分区架构如下图:

5、将已存在的数据表应用到该分区方案中,可以采用删除需分区字段的索引的方式进行,如本例中我用measuretime对该表进行分区:

--删除该分区字段上的索引

drop index  l_testresult.IDX_L_TESTRESULT_MEASURETIME

--按分区方案创建索引

create  index IDX_L_TESTRESULT_MEASURETIME

on l_testresult(measuretime)

on MonthDateRangeScheme(measuretime)

6、对于分区表中存在聚集索引,最好将其删除重建:

--重建聚聚集索引主建

ALTER TABLE l_testresult

DROP CONSTRAINT PK_L_testresult

ALTER TABLE l_testresult

ADD CONSTRAINT PK_l_testresult

PRIMARY KEY CLUSTERED(sampleno,testid,sampletype,editstatus)

三、查询分区信息:

1、查询该表是不是分区成功:

SELECT * FROM SYS.PARTITIONS WHERE OBJECT_ID = OBJECT_ID('l_testresult'),结果如下图:

2、  查询某段时间的数据位于哪个分区:

select * ,$PARTITION.MonthDateRange(measuretime) from l_testresult where measuretime>='2009-01-01',结果如下图:

SqlServer 2005 将已存在大量数据的表更改为分区表的更多相关文章

  1. mysql - 在已有真实数据的表的基础上加入自增主键

    先删除自增长在删除主键Alter table tb change id id int(10);//删除自增长Alter table tb drop primary key;//删除主建 然后再常规添加 ...

  2. Sqlserver 2005 跨数据库 导入数据

    --Sqlserver 2005 跨数据库 导入数据:--SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/O ...

  3. SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)

    原文:SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库) 场景 公司最近的sharepoint的数据库服务器老是出问题,并且在一旦出现问题,就导致无法正 ...

  4. Ubuntu系统下配置PHP支持SQLServer 2005

    最近在做一个项目,该项目的数据库是微软公司的的SQLserver ,数据库安装在另一台windows服务器上,而项目却部署在ubuntu server上.那么这样就会涉及到项目在linux上如何链接S ...

  5. 不制作证书是否能加密SQLSERVER与客户端之间传输的数据?

    不制作证书是否能加密SQLSERVER与客户端之间传输的数据? 在做实验之前请先下载network monitor抓包工具 微软官网下载:http://www.microsoft.com/en-us/ ...

  6. 使用SQLServer 2008的CDC功能实现数据变更捕获

    原文:使用SQLServer 2008的CDC功能实现数据变更捕获 最近由于工作需要,研究了一下2008 CDC功能,觉得还不错,下面整理了一下研究过程,虽然比较粗略,但是基本上能用了,如果有补充请大 ...

  7. SQLServer 2005 和自增长主键identity说再见——NEWSEQUENTIALID()

    ``code 在SQLServer2005环境下,表的主键应该怎样设计. 目前主要用到的主键方案共三种 自动增长主键 手动增长主键 UNIQUEIDENTIFIER主键 1.先说自动增长主键,它的优点 ...

  8. sqlserver 事务日志已满解决方案

    sqlserver 事务日志已满解决方案 可参考这篇博客: https://www.cnblogs.com/strayromeo/p/6961758.html 一.删除日志文件:(不建议) 二.手动收 ...

  9. SQL 已有数据的表创建标识列

    针对已有数据的表创建标识列: ,) constraint FID_1 primary key(FID)

随机推荐

  1. OAuth2 RFC 6749 规范提供的四种基本认证方案

    OAuth2 RFC 6749 规范提供了四种基本认证方案,以下针对这四种认证方案以及它们在本实现中的使用方式进行分别说面. 第一种认证方式: Authorization Code Grant (授权 ...

  2. LintCode: Maximum Subarray

    1. 暴力枚举 2. “聪明”枚举 3. 分治法 分:两个基本等长的子数组,分别求解T(n/2) 合:跨中心点的最大子数组合(枚举)O(n) 时间复杂度:O(n*logn) class Solutio ...

  3. VS2015 之 常用快捷键

    调试执行 F5,终止调试执行 Shift+F5 启动执行 Ctrl+F5 查找下一个 F3,查找上一个 Shift+F3 附加到进程 Ctrl+Alt+P,逐过程 F10,逐语句执行 F11 切换断点 ...

  4. Selenium2(webdriver)入门之TestNG的安装与简单使用

    上一篇已经搭建好了Eclipse+selenium2的环境,这一篇主要记录下TestNG的使用. 一.在Eclipse中安装TestNG 1.打开eclipse-->help-->Inst ...

  5. Android 在闹钟开机时,如何解决开机动画没有播完就进入Launcher M

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  6. TOJ 3365 ZOJ 3232 It's not Floyd Algorithm / 强连通分量

    It's not Floyd Algorithm 时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte   描述 When a directed grap ...

  7. mysql数据库配置优化(占cpu过高问题)

    MySQL5.6的my.ini配置 提供一个MySQL 5.6版本适合在1GB内存VPS上的my.cnf配置文件(点击这里下载文件): [client] port = 3306 socket = /t ...

  8. JAVA GC优化入门

    为什么需要优化GC? JAVA的GC是面试必考的题目,可是在实际项目中什么时候使用GC哪?或者应该什么时候优化GC哪?有句名言:“GC优化永远是最后一项任务”. 在使用GC之前,应该考虑一下进行GC的 ...

  9. JDK5.0 特性-线程任务执行架构 ScheduledExecutorService

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291469.html import java.util.concurrent.Callable ...

  10. H5 新增内容 新增属性

    1.视频 video 2.音频 audio 3.拖放 Drag 和 drop 4.画布 canvas 5.SVG 6.地理定位 navigator.geolocation.getCurrentPosi ...