科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何进行SQL Server 2005分区转换

如何进行SQL Server 2005分区转换

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这篇文章介绍了利用SQL Server分区的特色功能向数据表中添加数据的方法。尽管分区的优势很明显,当并不是在所有的情况下都适用,您需要对具体的情况进行测试和分析来决定是否进行分区和分区转换。

作者:开发者在线 来源:开发者在线 2007年8月29日

关键字: 分区 Tim Chapman 分区转换 SQL Server 2005 SQL Server

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

在这篇文章中,我将向您介绍如何修改数据分区来有效地添加新的数据。

分区

分区是指将一个很大的数据表中的一些数据行存储到其它的数据表中。这样做可以为数据库的管理带来便利,还有助于提高数据库的性能;而对于用户而言,他们实际上还是在操作一个大型的数据表。分区的另外一个优势还在于可以向分区中添加和删除数据。

分区转换

分区功能用于映射数据表的字段值来定义分区,在创建分区的时候这些值都已经定义好了。但是,如果您需要改变现有的分区来加载新的数据、移动现有的数据或者删除数据呢?分区转换可以实现在一个或多个分区数据表中移动大量数据的功能。

实例

分区经常用于存储存档数据,比如将数据从您的联机事务处理数据库移动到您的数据仓库等等。我们接下来展示的这个例子是将MP3播放器产品数据导入到SalesHistoryArchive数据表,我们假定MP3播放器的产品销售数据存储在名为MP3Import的表格中。

以下的SQL语句创建了相关的数据库对象,包括分区函数、分区模式还有SalesHistoryArchive数据表。

CREATE PARTITION FUNCTION [pf_Product_Partition](VARCHAR(10)) AS RANGE LEFT

 FOR VALUES (N'BigScreen', N'Computer', N'PoolTable')

 Go  

 CREATE PARTITION SCHEME [ps_Product_Scheme] AS PARTITION [pf_Product_Partition]

 ALL TO ([PRIMARY])

 GO  

 IF OBJECT_ID('SalesHistoryArchive')>0   

 DROP TABLE [SalesHistoryArchive];

 GO

 CREATE TABLE [dbo].[SalesHistoryArchive]

 (         

        [SaleID] [int] IDENTITY(1,1),         

        [Product] [varchar](10) NULL,               

        [SaleDate] [datetime] NULL,               

        [SalePrice] [money] NULL

 )ON [ps_Product_Scheme](Product)

 GO   

 DECLARE @i SMALLINT

 SET @i = 1

 WHILE (@i <=10000)

 BEGIN                     

     INSERT INTO SalesHistoryArchive(Product, SaleDate, SalePrice)                      

     VALUES('Computer', DATEADD(mm, @i, '3/11/1919'), DATEPART(ms, GETDATE()) + (@i + 57))   

     INSERT INTO SalesHistoryArchive(Product, SaleDate, SalePrice)         

     VALUES('BigScreen', DATEADD(mm, @i, '3/11/1927'), DATEPART(ms, GETDATE()) + (@i + 13))               

     INSERT INTO SalesHistoryArchive(Product, SaleDate, SalePrice)             

     VALUES('PoolTable', DATEADD(mm, @i, '3/11/1908'), DATEPART(ms, GETDATE()) + (@i + 29))                      

     SET @i = @i + 1

 END

 GO

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章