Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Retourne le numéro de partition dans lequel un ensemble de valeurs de colonne de partitionnement peut être mappé pour n’importe quelle fonction de partition spécifiée.
Conventions de la syntaxe Transact-SQL
Syntaxe
[ database_name. ] $PARTITION.partition_function_name(expression)
Arguments
database_name
Nom de la base de données qui contient la fonction de partition.
partition_function_name
Nom de toute fonction de partition existante par rapport à laquelle un ensemble de valeurs de colonne de partitionnement sont appliquées.
expression
Expression dont le type de données doit correspondre ou être implicitement convertible en type de données de sa colonne de partitionnement correspondante. Ce paramètre peut également être le nom d’une colonne de partitionnement qui participe actuellement à partition_function_name.
Types de retour
int
Notes
$PARTITION retourne une valeur int entre 1 et le nombre de partitions de la fonction de partition.
$PARTITION retourne le numéro de partition pour toute valeur valide, que la valeur existe actuellement dans une table ou un index partitionné qui utilise la fonction de partition.
Exemples
R. Récupération du numéro de partition pour un ensemble de valeurs de colonnes de partitionnement
Cet exemple crée une fonction de partition RangePF1 utilisant RANGE LEFT qui partitionne une table ou un index en quatre partitions.
$PARTITION est utilisé pour déterminer que la valeur 10, représentant la colonne de partitionnement de RangePF1, serait placée dans la partition 1 de la table.
CREATE PARTITION FUNCTION RangePF1(INT)
AS RANGE LEFT
FOR VALUES (10, 100, 1000);
GO
SELECT $PARTITION.RangePF1 (10);
GO
B. Récupération du nombre de lignes de chaque partition non vide dans une table ou un index partitionné
Cet exemple montre comment utiliser $PARTITION pour retourner le nombre de lignes dans chaque partition de table contenant des données.
Notes
Pour exécuter cet exemple, vous devez d’abord créer la fonction de partition RangePF1 à l’aide du code de l’exemple précédent.
Créez un schéma de partition,
RangePS1, pour la fonction de partitionRangePF1.CREATE PARTITION SCHEME RangePS1 AS PARTITION RangePF1 ALL TO ('PRIMARY'); GOCréez une table,
dbo.PartitionTable, sur le schéma de partitionRangePS1aveccol1comme colonne de partitionnement.CREATE TABLE dbo.PartitionTable ( col1 INT PRIMARY KEY, col2 CHAR (20) ) ON RangePS1 (col1); GOInsérez quatre lignes dans la table
dbo.PartitionTable. Ces lignes sont insérées dans des partitions en fonction de la définitionRangePF1de la fonction de partition :1et10accéder à la1de partition, tandis que500et1000atteindre3.INSERT dbo.PartitionTable (col1, col2) VALUES (1, 'a row'), (10, 'another row'), (500, 'another row'), (1000, 'another row'); GOInterrogez le
dbo.PartitionTableet utilisez$PARTITION.RangePF1(col1)dans la clauseGROUP BYpour interroger le nombre de lignes de chaque partition qui contient des données.SELECT $PARTITION.RangePF1 (col1) AS Partition, COUNT(*) AS [COUNT] FROM dbo.PartitionTable GROUP BY $PARTITION.RangePF1 (col1) ORDER BY Partition; GO
Voici le jeu de résultats.
| Partition | COUNT |
|---|---|
| 1 | 2 |
| 3 | 2 |
Les lignes ne sont pas retournées pour le numéro de partition 2, qui existe mais ne contient pas de données.
C. Retourne toutes les lignes d’une partition donnée faisant partie d’une table ou d’un index partitionné
L’exemple suivant retourne toutes les lignes de la partition 3 de la table PartitionTable.
SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1 (col1) = 3;
Voici le jeu de résultats.
| col1 | col2 |
|---|---|
500 |
autre ligne |
1000 |
autre ligne |