您的位置:首页 > 数据库

sql server 2005 T-SQL $PARTITION (Transact-SQL)

2007-12-22 09:20 507 查看
为任何指定的分区函数返回分区号,一组分区列值将映射到该分区号中。

Transact-SQL 语法约定

语法



[ database_name. ] $PARTITION.partition_function_name(expression)


参数



database_name

包含分区函数的数据库的名称。

partition_function_name

对其应用一组分区列值的任何现有分区函数的名称。

expression

其数据类型必须匹配或可隐式转换为其对应分区列数据类型的表达式。expression 也可以是当前参与 partition_function_name 的分区列的名称。

返回类型



int

备注



$PARTITION 返回从 1 到分区函数的分区数之间的 int 值。

$PARTITION 将针对任何有效值返回分区号,无论此值当前是否存在于使用分区函数的分区表或索引中。


示例



A. 获得一组一组分区列值的分区号

以下示例将创建一个将表或索引划分为四个分区的分区函数 RangePF1。$PARTITION 用于确定将表示 RangePF1 的分区列的值 10 置于表的第 1 分区。



复制代码


USE AdventureWorks ;

GO

CREATE PARTITION FUNCTION RangePF1 ( int )

AS RANGE FOR VALUES (10, 100, 1000) ;

GO

SELECT $PARTITION.RangePF1 (10) ;

GO


B. 获取分区表或索引的每个非空分区的行数

以下示例将返回包含数据的表 TransactionHistory 的每个分区的行数。TransactionHistory 表使用分区函数 TransactionRangePF1,并在 TransactionDate 列上进行分区。

注意:
若要执行此示例,必须首先对 AdventureWorks 示例数据库运行 PartitionAW.sql 脚本。有关详细信息,请参阅 Readme_PartitioningScript


复制代码


USE AdventureWorks ;

GO

SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition,

COUNT(*) AS [COUNT] FROM Production.TransactionHistory

GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)

ORDER BY Partition ;

GO


C. 返回分区表或索引的一个分区的所有行

以下示例将返回表 TransactionHistory 第 5 分区的所有行。

注意:
若要执行此示例,必须首先对 AdventureWorks 示例数据库运行 PartitionAW.sql 脚本。有关详细信息,请参阅 Readme_PartitioningScript


复制代码


SELECT * FROM Production.TransactionHistory

WHERE $PARTITION.Transact
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: