gebeurtenis
31 mrt, 23 - 2 apr, 23
De grootste SQL-, Fabric- en Power BI-leerevenement. 31 maart – 2 april. Gebruik code FABINSIDER om $ 400 te besparen.
Zorg dat u zich vandaag nog registreertDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
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
[ database_name. ] $PARTITION.partition_function_name(expression)
De naam van de database die de partitiefunctie bevat.
De naam van een bestaande partitiefunctie waarmee een set partitioneringskolomwaarden wordt toegepast.
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.
$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.
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 RangePF1
vertegenwoordigt, 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
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 partitiefunctie RangePF1
.
CREATE PARTITION SCHEME RangePS1
AS PARTITION RangePF1
ALL TO ('PRIMARY');
GO
Maak een tabel, dbo.PartitionTable
, in het RangePS1
partitieschema met col1
als de partitiekolom.
CREATE TABLE dbo.PartitionTable
(
col1 INT PRIMARY KEY,
col2 CHAR (20)
) ON RangePS1 (col1);
GO
Voeg vier rijen in de dbo.PartitionTable
tabel in. Deze rijen worden ingevoegd in partities op basis van de definitie van de partitiefunctie RangePF1
: 1
en 10
naar partitie 1
gaan, terwijl 500
en 1000
naar 3
gaan.
INSERT dbo.PartitionTable (col1, col2)
VALUES (1, 'a row'),
(10, 'another row'),
(500, 'another row'),
(1000, 'another row');
GO
Voer een query uit op de dbo.PartitionTable
en gebruikt $PARTITION.RangePF1(col1)
in de GROUP BY
component 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.
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 |
gebeurtenis
31 mrt, 23 - 2 apr, 23
De grootste SQL-, Fabric- en Power BI-leerevenement. 31 maart – 2 april. Gebruik code FABINSIDER om $ 400 te besparen.
Zorg dat u zich vandaag nog registreert