SqlServer2005分区表学习总结(3)

2020-02-21 17:26

--查看每个分区的数据分布情况

SELECT partition = $partition .PF_sMonthRange(sMonth), rows = count(*), minval = min(sMonth), maxval = max(sMonth) FROM [PS_QuantityCharge]

GROUP BY $partition .PF_sMonthRange(sMonth) ORDER BY partition

--查询某个分区有多少行数据

SELECT $PARTITION.PF_sMonthRange(sMonth) AS Partition, COUNT(*) AS [COUNT] FROM [PS_QuantityChargeHistory]

GROUP BY $PARTITION.PF_sMonthRange(sMonth) ORDER BY Partition ;

--通过以下三个视图来观察我们创建的分区函数,分区方案,边界点值等元数据 select * from sys.partition_functions select * from sys.partition_range_values select * from sys.partition_schemes

切换分区表的一个分区到普通数据表中:Partition to Table --创建普通表 IF

EXISTS

(SELECT

*

FROM

sys.objects

WHERE

object_id

=

OBJECT_ID(N'[PS_QuantityCharge200911]') AND type in (N'U'))

Drop TABLE [PS_QuantityCharge200911]; CREATE TABLE [PS_QuantityCharge200911](

[ID] [varchar](50) NOT NULL, [sMonth] [varchar](6) NOT NULL, [CustomerID] [varchar](50) NULL, [YSDF] [money] NULL, [YHYE] [money] NULL, [ZDF] [money] NULL, [ZDL] [float] NULL, [ZCalcDF] [money] NULL, [TBDF] [money] NULL, [byqf] [money] NULL, [syye] [money] NULL,

[Payment] [money] NULL, [CHECKDLDF] [float] NULL, [CalcCount] [int] NULL, [CalcFlag] [int] NULL,

[wyj_DerateMode] [varchar](50) NULL, [wyj_DerateRate] [float] NULL, [wyj_DerateValue] [float] NULL,

[DataDateTime] [datetime] NULL DEFAULT(getdate()),

Constraint PK_PS_QuantityCharge200911 Primary key(id,sMonth) ) on yalc_yygl

值得注意的是,如果你想顺利地进行分区到普通表的切换,最好满足以下的前提条件: 1. 普通表必须建立在分区表切换分区所在的文件组上。 2. 普通表的表结构跟分区表的一致; 3. 普通表上的索引要跟分区表一致; 4. 普通表必须是空表,不能有任何数据; 切换分区到普通表

alter table PS_QuantityChargeHistory switch partition 2 to PS_QuantityCharge200911 切换普通表到分区表

5. 普通表必须加上和分区数据范围一致的check 约束条件;

alter table PS_QuantityCharge200911 add constraint CK_PS_QuantityCharge200911 check (sMonth='200910' or sMonth='200911') 切换到分区表

alter table PS_QuantityCharge200911 switch to PS_QuantityChargeHistory partition 2 --分区到分区

alter table PS_QuantityChargeHistory switch partition 1 to PS_QuantityCharge partition 1 添加分区

ALTER PARTITION FUNCTION PF_sMonthRange() SPLIT RANGE ('200912') 合并分区

ALTER PARTITION FUNCTION PF_sMonthRange() MERGE RANGE ('200910')

通过图形我们来回忆下归档数据、添加分区、合并分区:

实际上,分区表分区切换并没有真正去移动数据,而是 SQL Server 在系统底层改变了表的元数据。因此分区表分区切换是高效、快速、灵活的。利用分区表的分区切换功能,我们可以快速加载 数据到分区表。卸载分区数据到普通表,然后 truncate 普通表,以实现快速删除分区表数据。快速归档不活跃数据到历史表。

上述所有资料均来自于互联网,在此衷心地表示感谢他们的辛勤劳动和无私的奋献。


SqlServer2005分区表学习总结(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:比丘记事(贤书法师) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: