问题描述
有人可以详细说明sys.partitions(Transact-sql)sql Server中 partition_number 和 partition_id 的区别吗?如果一个可以使用,为什么我们需要两个不同的ID?
解决方法
在documentation中,您将重点放在链接上
partition_id:指示分区ID。 在数据库中是唯一的。
partition_number:是一个1的分区号,在拥有索引或堆中。对于未分区的表和索引,此列的值为1。
partition_id
是数据库中分区的ID。 partition_number
用于其所在的对象,因为一个表可以具有多个分区,而一个数据库可以具有多个分区表。
partition_id 对于数据库是唯一的,类似于表的PK。 partition_number 是分区表或索引中的值,因为表(如果已分区)将具有多个分区
如果您查看this article,将看到一个示例,说明表中的日期如何具有不同的 partition_numbers 。
要查看正在使用的partition_id,请参阅this article,其中显示了针对数据库中分区表/索引的查询。
来自以下查询,也来自本文:
SELECT *
FROM sys.partitions
WHERE object_id = OBJECT_ID('dbo.HeapTest');
SELECT *
FROM sys.partitions
WHERE object_id = OBJECT_ID('dbo.ClusteredIndexTest');