Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Retourneert het partitienummer waarin een set partitioneringskolomwaarden kan worden toegewezen voor een opgegeven partitiefunctie.
Transact-SQL syntaxisconventies
Syntaxis
[ database_name. ] $PARTITION.partition_function_name(expression)
Argumenten
database_name
De naam van de database die de partitiefunctie bevat.
partition_function_name
De naam van een bestaande partitiefunctie waarmee een set partitioneringskolomwaarden wordt toegepast.
expressie
Een expressie waarvan het gegevenstype moet overeenkomen of impliciet moeten worden omgezet in het gegevenstype van de bijbehorende partitioneringskolom. Deze parameter kan ook de naam zijn van een partitioneringskolom die momenteel deelneemt aan partition_function_name.
Retourtypen
Opmerkingen
$PARTITION retourneert een int waarde tussen 1 en het aantal partities van de partitiefunctie.
$PARTITION retourneert het partitienummer voor een geldige waarde, ongeacht of de waarde momenteel bestaat in een gepartitioneerde tabel of index die gebruikmaakt van de partitiefunctie.
Voorbeelden
Een. Het partitienummer ophalen voor een set partitioneringskolomwaarden
In dit voorbeeld wordt een partitiefunctie gemaakt RangePF1 met BEREIK LINKS waarmee een tabel of index wordt gepartitioneert in vier partities.
$PARTITION wordt gebruikt om te bepalen of de waarde 10, die de partitiekolom van RangePF1vertegenwoordigt, in partities 1 van de tabel wordt geplaatst.
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
B. Het aantal rijen in elke lege partitie van een gepartitioneerde tabel of index ophalen
In dit voorbeeld ziet u hoe u $PARTITION gebruikt om het aantal rijen in elke partitie van de tabel met gegevens te retourneren.
Notitie
Als u dit voorbeeld wilt uitvoeren, moet u eerst de partitiefunctie maken RangePF1 met behulp van de code in het vorige voorbeeld.
Maak een partitieschema,
RangePS1, voor de partitiefunctieRangePF1.CREATE PARTITION SCHEME RangePS1 AS PARTITION RangePF1 ALL TO ('PRIMARY'); GOMaak een tabel,
dbo.PartitionTable, in hetRangePS1partitieschema metcol1als de partitiekolom.CREATE TABLE dbo.PartitionTable ( col1 INT PRIMARY KEY, col2 CHAR (20) ) ON RangePS1 (col1); GOVoeg vier rijen in de
dbo.PartitionTabletabel in. Deze rijen worden ingevoegd in partities op basis van de definitie van de partitiefunctieRangePF1:1en10naar partitie1gaan, terwijl500en1000naar3gaan.INSERT dbo.PartitionTable (col1, col2) VALUES (1, 'a row'), (10, 'another row'), (500, 'another row'), (1000, 'another row'); GOVoer een query uit op de
dbo.PartitionTableen gebruikt$PARTITION.RangePF1(col1)in deGROUP BYcomponent om een query uit te voeren op het aantal rijen in elke partitie die gegevens bevat.SELECT $PARTITION.RangePF1 (col1) AS Partition, COUNT(*) AS [COUNT] FROM dbo.PartitionTable GROUP BY $PARTITION.RangePF1 (col1) ORDER BY Partition; GO
Dit is de resultatenset.
| Verdelen | TELLEN |
|---|---|
| 1 | 2 |
| 3 | 2 |
Rijen worden niet geretourneerd voor partitienummer 2, die wel bestaan, maar geen gegevens bevatten.
C. Alle rijen van één partitie van een gepartitioneerde tabel of index retourneren
In het volgende voorbeeld worden alle rijen geretourneerd die zich in partitie 3 van de tabel bevinden PartitionTable.
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
Dit is de resultatenset.
| col1 | kolom2 |
|---|---|
500 |
een andere rij |
1000 |
een andere rij |