Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Mengembalikan nomor partisi tempat sekumpulan nilai kolom partisi dapat dipetakan untuk fungsi partisi yang ditentukan.
Sintaks
[ database_name. ] $PARTITION.partition_function_name(expression)
Argumen
database_name
Nama database yang berisi fungsi partisi.
partition_function_name
Nama fungsi partisi yang ada di mana sekumpulan nilai kolom pemartisian sedang diterapkan.
expression
Ekspresi yang jenis datanya harus cocok atau secara implisit dapat dikonversi ke jenis data kolom partisi yang sesuai. Parameter ini juga dapat menjadi nama kolom partisi yang saat ini berpartisipasi dalam partition_function_name.
Jenis yang dikembalikan
int
Keterangan
$PARTITION mengembalikan nomor partisi untuk nilai yang valid, terlepas dari apakah nilai saat ini ada dalam tabel atau indeks yang dipartisi yang menggunakan fungsi partisi.
Contoh
J. Mendapatkan nomor partisi untuk sekumpulan nilai kolom partisi
Contoh ini membuat fungsi RangePF1 partisi menggunakan RANGE LEFT yang akan mempartisi tabel atau indeks menjadi empat partisi.
$PARTITION digunakan untuk menentukan bahwa nilai 10, mewakili kolom partisi RangePF1, akan dimasukkan ke dalam 1 partisi tabel.
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
B. Mendapatkan jumlah baris di setiap partisi yang tidak ada dari tabel atau indeks yang dipartisi
Contoh ini memperlihatkan cara menggunakan $PARTITION untuk mengembalikan jumlah baris di setiap partisi tabel yang berisi data.
Catatan
Untuk menjalankan contoh ini, Anda harus terlebih dahulu membuat fungsi RangePF1 partisi menggunakan kode dalam contoh sebelumnya.
Buat skema partisi,
RangePS1, untuk fungsi partisiRangePF1.CREATE PARTITION SCHEME RangePS1 AS PARTITION RangePF1 ALL TO ('PRIMARY'); GOBuat tabel,
dbo.PartitionTable, pada skema partisiRangePS1dengancol1sebagai kolom partisi.CREATE TABLE dbo.PartitionTable ( col1 INT PRIMARY KEY, col2 CHAR (20) ) ON RangePS1 (col1); GOSisipkan empat baris ke dalam tabel
dbo.PartitionTable. Baris-baris ini dimasukkan ke dalam partisi berdasarkan fungsi partisi definisiRangePF1:1dan10masuk ke partisi1, sementara500dan1000masuk ke3.INSERT dbo.PartitionTable (col1, col2) VALUES (1, 'a row'), (10, 'another row'), (500, 'another row'), (1000, 'another row'); GOKueri
dbo.PartitionTabledan gunakan$PARTITION.RangePF1(col1)dalam klausaGROUP BYuntuk mengkueri jumlah baris di setiap partisi yang berisi data.SELECT $PARTITION.RangePF1 (col1) AS Partition, COUNT(*) AS [COUNT] FROM dbo.PartitionTable GROUP BY $PARTITION.RangePF1 (col1) ORDER BY Partition; GO
Berikut adalah hasil yang ditetapkan.
| Partisi | COUNT |
|---|---|
| 1 | 2 |
| 3 | 2 |
Baris tidak dikembalikan untuk nomor partisi 2, yang ada tetapi tidak berisi data.
C. Mengembalikan semua baris dari satu partisi tabel atau indeks yang dipartisi
Contoh berikut mengembalikan semua baris yang berada di partisi 3 tabel PartitionTable.
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
Berikut adalah hasil yang ditetapkan.
| col1 | col2 |
|---|---|
500 |
baris lain |
1000 |
baris lain |