$PARTITION (Transact-SQL)
Retourne le numéro de la partition dans laquelle un ensemble de valeurs de colonnes de partitionnement doit être mappé afin de pouvoir être utilisé par une fonction de partition précise.
Conventions de syntaxe de Transact-SQL
Syntaxe
[ database_name. ] $PARTITION.partition_function_name(expression)
Arguments
database_name
Nom de la base de données contenant la fonction de partition.
partition_function_name
Nom de la fonction de partition existante à laquelle un ensemble de valeurs de colonnes de partitionnement est appliqué.
expression
Expression dont le type de données doit correspondre ou être convertible de façon implicite au type de données de sa colonne de partitionnement en contrepartie. L'expression peut également représenter le nom d'une colonne de partitionnement participant à partition_function_name.
Notes
$PARTITION retourne une valeur de type int comprise entre 1 et le nombre de partitions de la fonction de partition.
$PARTITION retourne le numéro de partition pour toute valeur valide, sans vérifier l'existence de celle-ci dans une table ou un index partitionné utilisant la fonction de partition.
Types de retour
int
Exemples
A. Obtention du numéro de partition pour un ensemble de valeurs de colonnes de partitionnement
L'exemple suivant crée une fonction de partition appelée RangePF1
, chargée de partitionner une table ou un index en quatre partitions. $PARTITION permet de déterminer si la valeur 10
, correspondant à la colonne de partitionnement de RangePF1
, doit être placée dans la partition 1 de la table.
USE AdventureWorks ;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE 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é
L'exemple suivant retourne le nombre de lignes de chaque partition issue de la table TransactionHistory
contenant les données. La table TransactionHistory
utilise la fonction de partition TransactionRangePF1
et est partitionnée sur la colonne TransactionDate
.
Remarque : |
---|
Pour lancer cet exemple, vous devez au préalable exécuter le script PartitionAW.sql sur l'exemple de base de données AdventureWorks. Pour plus d'informations, consultez Readme_PartitioningScript. |
USE AdventureWorks ;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition,
COUNT(*) AS [COUNT] FROM Production.TransactionHistory
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO
C. Retour de 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 5
issue de la table TransactionHistory
.
Remarque : |
---|
Pour lancer cet exemple, vous devez au préalable exécuter le script PartitionAW.sql sur l'exemple de base de données AdventureWorks. Pour plus d'informations, consultez Readme_PartitioningScript. |
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;
Voir aussi
Référence
CREATE PARTITION FUNCTION (Transact-SQL)