$PARTITION(Transact-SQL)
적용 대상:SQL ServerAzure SQL 데이터베이스Azure SQL Managed Instance
지정된 파티션 함수에 대해 분할 열 값 집합을 매핑할 수 있는 파티션 번호를 반환합니다.
구문
[ database_name. ] $PARTITION.partition_function_name(expression)
인수
database_name
파티션 함수를 포함하는 데이터베이스의 이름입니다.
partition_function_name
분할 열 값 집합이 적용되는 기존 파티션 함수의 이름입니다.
expression
데이터 형식이 해당 분할 열의 데이터 형식과 일치하거나 암시적으로 변환될 수 있어야 하는 식. 이 매개 변수는 현재 partition_function_name참여하는 분할 열의 이름일 수도 있습니다.
반환 형식
int
설명
$PARTITION
파티션 함수의 파티션 수와 1
사이의 int 값을 반환합니다.
$PARTITION
파티션 함수를 사용하는 분할된 테이블 또는 인덱스에 현재 값이 있는지 여부에 관계없이 유효한 값에 대한 파티션 번호를 반환합니다.
예
A. 분할 열 값 집합에 대한 파티션 번호 가져오기
이 예에서는 테이블이나 인덱스를 4개의 파티션으로 분할하는 RangePF1
를 사용하는 파티션 함수 을 만듭니다.
$PARTITION
RangePF1
분할 열을 나타내는 10
값이 테이블의 파티션 1
배치될지 확인하는 데 사용됩니다.
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
B. 분할된 테이블이나 인덱스의 비어 있지 않은 각 파티션에 있는 행 수 가져오기
이 예제에서는 $PARTITION
을 사용하여 데이터를 포함하는 테이블의 각 파티션에 있는 행 수를 반환하는 방법을 보여 줍니다.
참고
이 예제를 실행하려면 먼저 이전 예제의 코드를 사용하여 파티션 함수 RangePF1
을 만들어야 합니다.
파티션 함수
RangePF1
대한 파티션 구성표(RangePS1
)를 만듭니다.CREATE PARTITION SCHEME RangePS1 AS PARTITION RangePF1 ALL TO ('PRIMARY'); GO
col1
분할 열로 사용하여RangePS1
파티션 구성표에 테이블(dbo.PartitionTable
)을 만듭니다.CREATE TABLE dbo.PartitionTable ( col1 INT PRIMARY KEY, col2 CHAR (20) ) ON RangePS1 (col1); GO
dbo.PartitionTable
테이블에 4개의 행을 삽입합니다. 이러한 행은 파티션 함수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
결과 집합은 다음과 같습니다.
파티션 | 개수 |
---|---|
1 | 2 |
3 | 2 |
행은 존재하지만 데이터가 포함되지 않은 파티션 번호 2
대해 반환되지 않습니다.
C. 분할된 테이블이나 인덱스의 특정 파티션에서 모든 행 반환
다음 예에서는 PartitionTable
테이블의 파티션 3에 있는 모든 행을 반환합니다.
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
결과 집합은 다음과 같습니다.
col1 | col2 |
---|---|
500 |
다른 행 |
1000 |
다른 행 |