Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renvoyer le numéro de partition pour chaque ligne lors de l'interrogation d'une table partitionnée dans SQL Server (T-SQL)

Si vous avez une table partitionnée dans SQL Server et que vous souhaitez maintenant exécuter une requête qui inclut le numéro de partition sur chaque ligne renvoyée par la requête, vous pouvez utiliser le $PARTITION fonction système pour faire exactement cela.

La $PARTITION renvoie le numéro de partition dans lequel un ensemble de valeurs de colonne de partitionnement serait mappé pour toute fonction de partition spécifiée.

Vous pouvez donc l'utiliser dans votre SELECT pour renvoyer la partition à laquelle appartient chaque ligne.

Exemple

Voici un exemple pour illustrer.

SELECT 
    CatId,
    CatName,
    $PARTITION.CatsPartitionFunction(CatId) AS [Partition]
FROM Cats;

Résultat :

+---------+-------------+-------------+
| CatId   | CatName     | Partition   |
|---------+-------------+-------------|
| 1       | Meow        | 2           |
| 2       | Fluffy      | 2           |
| 3       | Scratch     | 2           |
| 4       | Bulldog     | 2           |
| 5       | King George | 2           |
| 6       | Sharp       | 3           |
| 7       | Fritz       | 3           |
| 8       | Garfield    | 3           |
| 9       | Boss        | 3           |
+---------+-------------+-------------+

Dans ce cas, les lignes sont réparties entre les partitions 2 et 3.

La partition 1 est vide (tout comme la partition 4), conformément à la recommandation de Microsoft de laisser les partitions vides aux deux extrémités, pour éliminer le mouvement des données en cas de division ou de fusion des partitions.