对已存在的数据库表中进行分区

  【转】

两天一直在研究2005 中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便.今天发现了如何更改表文件组的所在文件组,然后看了看.会不会也能应用到分区表中..试了试嗯.不错...真的管用哦.下面看看代码

说明 现有表 myTb 主键索引 PK_myTb.
原理 更改表的聚集索引的所在文件组使得表移动到新的"文件组中(这里我们用表分区)".
先创建文件组,以及分区函数等请参考http://hi.baidu.com/bg1jt/blog/item/ad3b6a631ad73a640d33fa4e.html 我的这篇文章.

然后将创建表部分替换成
alter table myTb drop constraint PK_myTb--
删除现有表的主键(对有全文索引的只能再管理器中去除主键)
ALTER TABLE [dbo].[fabu] WITH NOCHECK ADD
CONSTRAINT [PK_fabu] PRIMARY KEY CLUSTERED
(
[id]--
注意ID这里是你原来的那些主键组成的列
) ON [ps_Product_Scheme_mTb]([id])--
将主键创建到ps_Product_Scheme_mTb分区函数上
用下面这条语句看看分区是不是已经改变了?
SELECT *, $PARTITION.pf_Product_fabu(ID) AS PF FROM myTb

这样的好处在于不用新建表.这样就像本人那种表的ID在多个表中作为参考的从新建表其他信息将无用..
弊端-这样对有全文索引的表必须从新建立全文索引..

----------------------------------------------

posted @ 2010-07-15 22:46  邓维  阅读(1932)  评论(0编辑  收藏  举报