事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊
適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
傳回數據分割編號,其中一組數據分割數據行值可以對應至任何指定的數據分割函數。
[ database_name. ] $PARTITION.partition_function_name(expression)
包含數據分割函數的資料庫名稱。
套用一組數據分割數據行值的任何現有數據分割函式名稱。
表示式 其數據類型必須符合或隱含轉換成其對應數據分割數據行的數據類型。 這個參數也可以是目前參與 partition_function_name的數據分割數據行名稱。
int
$PARTITION
會傳回 1
與數據分割函式分割數目之間的 int 值。
$PARTITION
傳回任何有效值的分割區編號,不論值目前是否存在於使用數據分割函數的數據分割數據表或索引中。
此範例使用 RangePF1
建立 資料分割函數,將資料表或索引分割成四份分割區。
$PARTITION
用來判斷值 10
,代表 RangePF1
的數據分割數據行,將會放在數據表的分割區 1
中。
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
此範例示範如何使用 $PARTITION
,傳回包含資料之每個資料表分割區中的資料列數目。
注意
若要執行此範例,您必須先使用上一個範例中的程式碼來建立資料分割函數 RangePF1
。
為資料分割函式建立資料分割配置,RangePS1
RangePF1
。
CREATE PARTITION SCHEME RangePS1
AS PARTITION RangePF1
ALL TO ('PRIMARY');
GO
在 RangePS1
數據分割配置上建立數據表 dbo.PartitionTable
,col1
做為分割數據行。
CREATE TABLE dbo.PartitionTable
(
col1 INT PRIMARY KEY,
col2 CHAR (20)
) ON RangePS1 (col1);
GO
將四個數據列插入 dbo.PartitionTable
數據表中。 這些數據列會根據資料分割函數 RangePF1
定義插入分割區:1
和 10
移至分割區 1
,而 500
和 1000
移至 3
。
INSERT dbo.PartitionTable (col1, col2)
VALUES (1, 'a row'),
(10, 'another row'),
(500, 'another row'),
(1000, 'another row');
GO
查詢 dbo.PartitionTable
並使用 GROUP BY
子句中的 $PARTITION.RangePF1(col1)
來查詢包含數據的每個分割區中的數據列數目。
SELECT $PARTITION.RangePF1 (col1) AS Partition,
COUNT(*) AS [COUNT]
FROM dbo.PartitionTable
GROUP BY $PARTITION.RangePF1 (col1)
ORDER BY Partition;
GO
以下是結果集。
資料分割 | COUNT |
---|---|
1 | 2 |
3 | 2 |
數據分割編號 2
不會傳回數據列,但不包含數據。
下列範例會傳回資料表 PartitionTable
之第 3 個分割區的所有資料列。
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
以下是結果集。
col1 | col2 |
---|---|
500 |
另一個資料列 |
1000 |
另一個資料列 |
事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊