一、分区表简介:

使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。
分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个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. pdf阅读器改背景色

  2. Tomcat的性能与最大并发配置

    当一个进程有 500 个线程在跑的话,那性能已经是很低很低了.Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大. 当某个应用拥有 250 个以上并 ...

  3. ES6 箭头函数(arrow function)

    例行声明:接下来的文字内容全部来自 Understanding ECMAScript 6,作者是Nicholas C.Zakas,也就是大名鼎鼎的Professional JavaScript for ...

  4. php 字符串中的\n换行符无效、不能换行的解决方法

    php 字符串中的\n换行符无效.不能换行的解决方法 程序的中的换行符\n会直接输出,无法正确换行,解决方法是把单引号改为双引号 aa

  5. Stingray验证机制

    Filter 系统中的验证使用的是Filter库来完成,利用Filter配置几个属性和参数就实现了表单验证,简化了工作.基本原理很简单,在onload之后按照属性查找元素,然后绑定相应的change/ ...

  6. Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'系列三:重置主从同步

    1:停止slave服务器的主从同步 stop slave; 2:对Master数据库加锁 flush tables with read lock; 3:备份Master上的数据 mysqldump - ...

  7. Android为ViewPager添加切换动画——自己定义ViewPager

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/44224517 在上篇博客中,我写了一个使用属性动画为ViewPager加入切换动画 ...

  8. ES6学习笔记一:let、const、解构赋值

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7236342.html 感谢阮一峰老师的无私奉献,开源推动世界!教程地址:http://es6.ruanyife ...

  9. React学习笔记一:入门知识概览

    一:安装react 1:直接下载react源码包,把需要用到的js文件引入自己的页面即可. 2:BootCDN 的 React CDN 库: 在页面代码中导入即可: <head> < ...

  10. VIM设置代码折叠

    今天看了一下别人写的程序的源代码,发现是用vim写的,代码中有趣是用vim来折叠代码,一开始我以为是用插件的,后来上网查了查,得出以下使用方面的技巧. 1. 折叠方式 可用选项来设定折叠方式: 可在V ...