zoukankan      html  css  js  c++  java
  • 对已存在的数据库表中进行分区

      【转】

    两天一直在研究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在多个表中作为参考的从新建表其他信息将无用..
    弊端-这样对有全文索引的表必须从新建立全文索引..

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

  • 相关阅读:
    第3章 C++ I/O流技术
    第2章 C++模板技术
    第1章 C++编程技术
    第0章 目录
    判断鼠标移入移出方向设置
    获取数组最小值
    jquery里的宽度详解
    trigger,triggerhandler模拟事件
    表单验证 不能为负值或者字母
    arguments的用法
  • 原文地址:https://www.cnblogs.com/no7dw/p/1778454.html
Copyright © 2011-2022 走看看