Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Vrátí číslo oddílu, do kterého lze namapovat sadu hodnot oddílů sloupců pro libovolnou zadanou funkci oddílu.
Syntax
[ database_name. ] $PARTITION.partition_function_name(expression)
Argumenty
database_name
Název databáze, která obsahuje funkci oddílu.
partition_function_name
Název jakékoli existující funkce oddílu, pro kterou se používá sada hodnot sloupců dělení.
výrazu
Výraz , jehož datový typ se musí shodovat nebo implicitně převést na datový typ odpovídajícího sloupce dělení. Tento parametr může být také názvem sloupce dělení, který se aktuálně účastní partition_function_name.
Návratové typy
int
Poznámky
$PARTITION vrátí hodnotu int mezi 1 a počtem oddílů funkce oddílu.
$PARTITION vrátí číslo oddílu pro libovolnou platnou hodnotu bez ohledu na to, jestli hodnota aktuálně existuje v dělené tabulce nebo indexu, která používá funkci oddílu.
Příklady
A. Získání čísla oddílu pro sadu hodnot sloupců dělení
Tento příklad vytvoří funkci oddílu RangePF1 pomocí OBLAST VLEVO, která rozdělí tabulku nebo index do čtyř oddílů.
$PARTITION slouží k určení, že hodnota 10představující sloupec dělení RangePF1by byla vložena do oddílu 1 tabulky.
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
B. Získání počtuřádkůchchch
Tento příklad ukazuje, jak pomocí $PARTITION vrátit počet řádků v každém oddílu tabulky, která obsahuje data.
Poznámka
Pokud chcete tento příklad spustit, musíte nejprve vytvořit funkci oddílu RangePF1 pomocí kódu v předchozím příkladu.
Vytvořte schéma oddílů,
RangePS1, pro funkci oddíluRangePF1.CREATE PARTITION SCHEME RangePS1 AS PARTITION RangePF1 ALL TO ('PRIMARY'); GOVytvořte tabulku
dbo.PartitionTablev schématu oddílůRangePS1scol1jako sloupce dělení.CREATE TABLE dbo.PartitionTable ( col1 INT PRIMARY KEY, col2 CHAR (20) ) ON RangePS1 (col1); GOVložte do tabulky
dbo.PartitionTablečtyři řádky. Tyto řádky se vloží do oddílů na základě definiceRangePF1funkce oddílu:1a10přejít na oddíl1, zatímco500a1000přejít na3.INSERT dbo.PartitionTable (col1, col2) VALUES (1, 'a row'), (10, 'another row'), (500, 'another row'), (1000, 'another row'); GODotazování
dbo.PartitionTablea použití$PARTITION.RangePF1(col1)v klauzuliGROUP BYk dotazování počtu řádků v každém oddílu, který obsahuje data.SELECT $PARTITION.RangePF1 (col1) AS Partition, COUNT(*) AS [COUNT] FROM dbo.PartitionTable GROUP BY $PARTITION.RangePF1 (col1) ORDER BY Partition; GO
Tady je sada výsledků.
| Oddíl | POČÍTAT |
|---|---|
| 1 | 2 |
| 3 | 2 |
Řádky se nevrácejí pro číslo oddílu 2, které existují, ale neobsahují data.
C. Vrácení všech řádků z jednoho oddílu dělené tabulky nebo indexu
Následující příklad vrátí všechny řádky, které jsou v oddílu 3 tabulky PartitionTable.
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
Tady je sada výsledků.
| sloupec 1 | sloupec 2 |
|---|---|
500 |
jiný řádek |
1000 |
jiný řádek |
Související obsah
- dělené tabulky a indexy
- CREATE PARTITION FUNCTION (Transact-SQL)
- Úprava funkce oddílu
- Úprava schématu oddílů
-
sys.partition_functions (Transact-SQL) -
sys.partition_schemes (Transact-SQL)