İngilizce dilinde oku

Aracılığıyla paylaş


$PARTITION (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Belirtilen herhangi bir bölümleme işlevi için bölümleme sütun değerleri kümesinin eşlenebileceği bölüm numarasını döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

syntaxsql
[ database_name. ] $PARTITION.partition_function_name(expression)

Bağımsız değişken

database_name

Bölüm işlevini içeren veritabanının adı.

partition_function_name

Bölümleme sütunu değerleri kümesinin uygulandığı mevcut bölümleme işlevlerinin adı.

ifade

Veri türünün ilgili bölümleme sütununun veri türüyle eşleşmesi veya örtük olarak dönüştürülebilir olması gereken bir ifadesi. Bu parametre, şu anda partition_function_namekatılan bölümleme sütununun adı da olabilir.

Dönüş türleri

int

Açıklamalar

$PARTITION, 1 ile bölüm işlevinin bölüm sayısı arasında bir int değeri döndürür.

$PARTITION, değerin bölümlenmiş bir tabloda veya bölüm işlevini kullanan dizinde mevcut olup olmadığına bakılmaksızın geçerli herhangi bir değerin bölüm numarasını döndürür.

Örnekler

A. Bölümleme sütunu değerleri kümesinin bölüm numarasını alma

Bu örnek, bir tabloyu veya dizini dört bölüme bölecek ARALIK SOL kullanarak RangePF1 bir bölüm işlevi oluşturur. $PARTITION, RangePF1bölümleme sütununu temsil eden 10değerinin tablonun bölüm 1 yerleştirileceğini belirlemek için kullanılır.

SQL
CREATE PARTITION FUNCTION RangePF1(INT)
    AS RANGE LEFT
    FOR VALUES (10, 100, 1000);
GO

SELECT $PARTITION.RangePF1 (10);
GO

B. Bölümlenmiş bir tablo veya dizinin her bir boş bölümündeki satır sayısını alma

Bu örnekte, veri içeren tablonun her bir bölümündeki satır sayısını döndürmek için $PARTITION nasıl kullanılacağı gösterilmektedir.

Not

Bu örneği yürütmek için önce önceki örnekteki kodu kullanarak bölüm işlevi RangePF1 oluşturmanız gerekir.

  1. RangePF1bölüm işlevi için RangePS1bir bölüm düzeni oluşturun.

    SQL
    CREATE PARTITION SCHEME RangePS1
        AS PARTITION RangePF1
        ALL TO ('PRIMARY');
    GO
    
  2. bölümleme sütunu olarak col1RangePS1 bölüm düzeninde dbo.PartitionTablebir tablo oluşturun.

    SQL
    CREATE TABLE dbo.PartitionTable
    (
        col1 INT PRIMARY KEY,
        col2 CHAR (20)
    ) ON RangePS1 (col1);
    GO
    
  3. dbo.PartitionTable tablosuna dört satır ekleyin. Bu satırlar bölüm işlevi RangePF1 tanımına göre bölümlere eklenir: 1 ve 10 bölüm 1bölümüne, 500 ve 10003gidin.

    SQL
    INSERT dbo.PartitionTable (col1, col2)
    VALUES (1, 'a row'),
        (10, 'another row'),
        (500, 'another row'),
        (1000, 'another row');
    GO
    
  4. dbo.PartitionTable sorgular ve GROUP BY yan tümcesindeki $PARTITION.RangePF1(col1) kullanarak her bölümdeki veri içeren satır sayısını sorgular.

    SQL
    SELECT $PARTITION.RangePF1 (col1) AS Partition,
           COUNT(*) AS [COUNT]
    FROM dbo.PartitionTable
    GROUP BY $PARTITION.RangePF1 (col1)
    ORDER BY Partition;
    GO
    

Sonuç kümesi aşağıdadır.

Bölüm SAYMAK
1 2
3 2

Satırlar, var olan ancak veri içermeyen 2bölüm numarası için döndürülmez.

C. Bölümlenmiş tablo veya dizinin bir bölümündeki tüm satırları döndürme

Aşağıdaki örnek, PartitionTabletablonun 3. bölümündeki tüm satırları döndürür.

SQL
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;

Sonuç kümesi aşağıdadır.

sütun1 col2
500 başka bir satır
1000 başka bir satır