Partager via


$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.

Icône Lien de rubriqueConventions 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.

Types de retour

int

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.

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 ;