Nếu bạn có một bảng được phân vùng trong SQL Server và bây giờ bạn muốn chạy một truy vấn bao gồm số phân vùng trên mỗi hàng được truy vấn trả về, bạn có thể sử dụng $PARTITION
chức năng hệ thống để thực hiện điều đó.
$PARTITION
hàm trả về số phân vùng trong đó tập hợp các giá trị cột phân vùng sẽ được ánh xạ cho bất kỳ chức năng phân vùng cụ thể nào.
Do đó, bạn có thể sử dụng nó trong SELECT
của mình để trả về phân vùng mà mỗi hàng thuộc về.
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT
CatId,
CatName,
$PARTITION.CatsPartitionFunction(CatId) AS [Partition]
FROM Cats;
Kết quả:
+---------+-------------+-------------+ | CatId | CatName | Partition | |---------+-------------+-------------| | 1 | Meow | 2 | | 2 | Fluffy | 2 | | 3 | Scratch | 2 | | 4 | Bulldog | 2 | | 5 | King George | 2 | | 6 | Sharp | 3 | | 7 | Fritz | 3 | | 8 | Garfield | 3 | | 9 | Boss | 3 | +---------+-------------+-------------+
Trong trường hợp này, các hàng được phân phối giữa các phân vùng 2 và 3.
Phân vùng 1 trống (cũng như phân vùng 4), theo khuyến nghị của Microsoft về việc để trống phân vùng ở cả hai đầu, để loại bỏ sự di chuyển dữ liệu trong sự kiện các phân vùng bị chia tách hoặc hợp nhất.