日期:2014-05-19  浏览次数:20600 次

请教Sql Server 2005 中关于对分区表的理解和应用(原理上还没有弄懂)
刚接触Sql   Server   2005,对书中的分区表很感兴趣,但理解不了,下面我讲一下我希望达到的效果,大家看能不能满足,最好用通俗的语言讲一下分区表的使用.
        我有一个表,里面储存了大量历史记录(假如为销售信息,包含销售时间、品名两个字段,以销售时间做索引),每天都要销售大量物品,查询时通常查询本月1号到今天的销售情况,在过去我的做法是建立一个历史表,表结构和当前使用的表完全一样,每个月将上个月以前的数据insert到历史表中,然后删除当前表中对应的数据,查询时,首先检查起止日期,如果在当月中,则直接查询当前表,否则,将历史表union起来查询,营业员销售时,因为本月数量并不大(相对历史数据),因此,插入速度非常快.
        对分区表,是否可以这样认为,将每个月的数据放到一个表中,如果是这样,如何查询呢?如何将每月的数据放到一个分区表中呢?看书上的介绍,好象是创建一个储存过程,指定了月份什么的,如果前面已经有3个月数据了,现在4月份结束了,要把4月分的数据移到一个分区表中该如何处理呢?
        由于刚接触分区表,可能概念本身就理解错了,不要笑话哦.

------解决方案--------------------
关注中...
------解决方案--------------------
创建分区表或分区索引分为以下几个步骤:

创建分区函数以指定如何分区使用该函数的表或索引。


创建分区方案以指定分区函数的分区在文件组上的位置。


创建使用分区方案的表或索引。


创建分区函数
分区函数指定如何对表或索引进行分区。该函数将域映射到一组分区。若要创建分区函数,请指定分区数、分区依据列和每个分区的分区依据列值的范围。请注意,指定分区依据列时,仅可以指定一列。

有关如何计划分区函数的详细信息,请参阅已分区表和索引的计划指南。

分区依据列规则
参与分区函数的计算列必须显式标记为 PERSISTED。

用作索引列时有效的所有数据类型都可以用作分区依据列,timestamp 除外。无法指定 ntext、text、image、xml、varchar(max)、nvarchar(max) 或 varbinary(max) 数据类型。此外,无法指定 Microsoft .NET Framework 公共语言运行时 (CLR) 用户定义类型和别名数据类型列。

创建分区函数

CREATE PARTITION FUNCTION (Transact-SQL)


创建分区方案
分区方案将分区函数生成的分区映射到您定义的一组文件组。

创建分区方案时,根据分区函数的参数,定义映射表分区的文件组。必须指定足够的文件组来容纳分区数。可以指定所有分区映射到不同文件组、某些分区映射到单个文件组或所有分区映射到单个文件组。如果您希望在以后添加更多分区,还可以指定其他“未分配的”文件组。在这种情况下,SQL Server 用 NEXT USED 属性标记其中一个文件组。这意味着该文件组将包含下一个添加的分区。

一个分区方案仅可以使用一个分区函数。但是,一个分区函数可以参与多个分区方案。

创建分区方案

CREATE PARTITION SCHEME (Transact-SQL)


创建分区表或分区索引
若要在创建表或索引时对其进行分区,可以在 CREATE TABLE 或 CREATE INDEX 语句中指定下列内容:

表用于将分区映射到文件组的分区方案。


对表进行分区的依据列(分区依据列)。分区依据列必须与分区方案在数据类型、长度和精度方面使用的分区函数中指定的列匹配。如果列已计算,则必须将该列指定为 PERSISTED。


创建使用分区方案的表

CREATE TABLE (Transact-SQL)


创建使用分区方案的索引

CREATE INDEX (Transact-SQL)

------解决方案--------------------
楼主在联机帮助看一下用法例子就OK了
------解决方案--------------------
http://sqlserver2005.itpub.net/post/22359/228863