$PARTITION (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Mengembalikan nomor partisi tempat sekumpulan nilai kolom partisi akan dipetakan untuk fungsi partisi yang ditentukan.
Sintaks
[ database_name. ] $PARTITION.partition_function_name(expression)
Argumen
database_name
Adalah nama database yang berisi fungsi partisi.
partition_function_name
Adalah nama fungsi partisi yang ada di mana sekumpulan nilai kolom partisi sedang diterapkan.
expression
Adalah ekspresi yang jenis datanya harus cocok atau secara implisit dapat dikonversi ke jenis data kolom partisi yang sesuai. ekspresi juga bisa menjadi nama kolom partisi yang saat ini berpartisipasi dalam partition_function_name.
Jenis yang dikembalikan
int
Keterangan
$PARTITION mengembalikan nilai int antara 1 dan jumlah partisi fungsi partisi.
$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
, yang mewakili kolom partisi , RangePF1
akan dimasukkan ke dalam partisi 1 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.
Contohnya:
- Membuat skema partisi,
RangePS1
, untuk fungsiRangePF1
partisi . - Membuat tabel,
dbo.PartitionTable
, padaRangePS1
skema partisi dengancol1
sebagai kolom partisi. - Menyisipkan empat baris ke
dbo.PartitionTable
dalam tabel. Berdasarkan definisi fungsi partisi, baris ini akan dimasukkan ke dalam partisi 2 dan 3. Partisi 1 dan 4 akan tetap kosong. - Mengkueri
dbo.PartitionTable
dan menggunakan dalam klausul$PARTITION.RangePF1(col1)
GROUP BY untuk mengkueri jumlah baris di setiap partisi yang berisi data.
Catatan
Untuk menjalankan contoh ini, Anda harus terlebih dahulu membuat fungsi RangePF1
partisi menggunakan kode dalam contoh sebelumnya.
CREATE PARTITION SCHEME RangePS1
AS PARTITION RangePF1
ALL TO ('PRIMARY') ;
GO
CREATE TABLE dbo.PartitionTable (col1 int PRIMARY KEY, col2 char(10))
ON RangePS1 (col1) ;
GO
INSERT dbo.PartitionTable (col1, col2)
VALUES ((1,'a row'),(100,'another row'),(500,'another row'),(1000,'another row'))
SELECT
$PARTITION.RangePF1(col1) AS Partition,
COUNT(*) AS [COUNT]
FROM dbo.PartitionTable
GROUP BY $PARTITION.RangePF1(col1)
ORDER BY Partition ;
GO
Kueri SELECT
harus mengembalikan hasil berikut:
Partisi | COUNT |
---|---|
2 | 1 |
3 | 3 |
Baris tidak dikembalikan untuk partisi nomor 1 dan 4, 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 ;
Kueri harus mengembalikan hasil berikut:
col1 | col2 |
---|---|
101 | baris lain |
500 | baris ketiga |
501 | baris keempat |
Langkah berikutnya
Pelajari selengkapnya tentang pemartisian tabel di artikel ini: