Nếu bạn có một bảng hoặc chỉ mục được phân vùng trong SQL Server và bạn muốn xác định phân vùng nào mà một giá trị nhất định sẽ được ánh xạ tới, bạn có thể thực hiện việc này một cách dễ dàng và nhanh chóng với $PARTITION
chức năng hệ thống.
Tất cả những gì bạn cần biết là tên của hàm phân vùng (và tất nhiên, giá trị mà bạn quan tâm).
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT $PARTITION.MoviesPartitionFunction(5);
Kết quả:
+--------------------+ | (No column name) | |--------------------| | 2 | +--------------------+
Trong trường hợp này, giá trị 5
sẽ chuyển sang phân vùng số 2.
Hãy thử một số giá trị khác.
SELECT
$PARTITION.MoviesPartitionFunction(-100) AS [-100],
$PARTITION.MoviesPartitionFunction(100) AS [100],
$PARTITION.MoviesPartitionFunction(1000) AS [1000],
$PARTITION.MoviesPartitionFunction(100000) AS [100000];
Kết quả:
+--------+-------+--------+----------+ | -100 | 100 | 1000 | 100000 | |--------+-------+--------+----------| | 1 | 2 | 3 | 4 | +--------+-------+--------+----------+
Truy vấn cơ sở dữ liệu chéo
Bạn cũng có thể đặt trước tên cơ sở dữ liệu để truy vấn một cơ sở dữ liệu khác.
SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);
Chuyển đổi loại dữ liệu
Kiểu dữ liệu của giá trị bạn cung cấp phải khớp hoặc hoàn toàn có thể chuyển đổi thành kiểu dữ liệu của cột phân vùng tương ứng.
Nếu không, có thể bạn sẽ gặp lỗi 245.
SELECT $PARTITION.MoviesPartitionFunction('Hey!');
Kết quả:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Hey!' to data type int.
Lưu ý rằng $PARTITION
trả về số phân vùng cho bất kỳ giá trị hợp lệ nào, bất kể giá trị hiện có tồn tại trong bảng hoặc chỉ mục được phân vùng sử dụng hàm phân vùng hay không.