SqlServer2008实例27管理超大型表之把分区移动到不同的表

    使用SQL Server的分区功能,可以用最少的工作或最小开销在不同的表之间转移分区。可以使用ALTER TABLE...SWITCH在表之间转移分区。转移能以3种方式进行:

  • 从一个已分区的表转移一个分区到另外一个已分区的表(都需要对同一列进行分区)
  • 转移整个未分区的表到一个已分区的表,
  • 从一个已分区的表移动一个分区到一个未分区的表。

    在SQL Server 2005中,不能在绑定了架构的视图中引用分区表,也不允许使用索引视图.SQL Server 2008支持架构绑定和分区索引视图.
    在表之间切换分区的基本语法如下:

ALTER TABLE tablename

SWITCH [ PARTITlON source_partition_number_expression )

TO [ schema_name.] target_table

[ PARTITION target_partition_number_expression]

      ALTER  TABLE...SWITCH参数

参  数

描  述

tablename

要移动分区的源表

source_partition_number_expression

要重新分配的分区号

[ schema_name.] target_table

接收分区的目标表

PARTITION target_partition_number_expression

目标分区号

    例如,在Sales.WebSiteHits表和一个叫做Sales.WebSiteHitsHistory的新表之间移动分区。第一步是创建一个新表来保存历史网站点击信息:

CREATE TABLE Sales.WebSiteHitsHistory
(
    WebSiteHitID bigint NOT NULL IDENTITY(1,1),
    WebSitePage varchar(255) NOT NULL,
    HitDate datetime NOT NULL
    CONSTRAINT PK_WebSiteHitsHistory
    PRIMARY KEY (WebSiteHitID,HitDate)
)
ON [HitDateRangeScheme] (HitDate)

--然后,使用ALTER TABLE把Sales.WebSiteHits表的3号分区转移到新表Salles.WebSiteHitsHistory
--的3号分区中
ALTER TABLE Sales.WebSiteHits SWITCH PARTITION 3
TO Sales.WebSiteHitsHistory PARTITION 3

--接着,使用$PARTITION执行查询来查看转移到新表巾的数据:
SELECT HitDate,$PARTITION.HitDateRange (HitDate) Partition
FROM Sales.WebSiteHitsHistory

    在表之间转移分区比手动执行行操作(例如INSERT_S卧ECT)快很多,凶为并小是真正移动物理数据,只是修改了有关分区目前保存在哪里的元数据。同样要记住,任何既有表的目标分区必须是空的才能作为目的分区。如果它是一个未分区的表,它也必须是空的。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值