Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Zurückgeben der Partitionsnummer für jede Zeile beim Abfragen einer partitionierten Tabelle in SQL Server (T-SQL)

Wenn Sie eine partitionierte Tabelle in SQL Server haben und jetzt eine Abfrage ausführen möchten, die die Partitionsnummer in jeder von der Abfrage zurückgegebenen Zeile enthält, können Sie den $PARTITION verwenden Systemfunktion, um genau das zu tun.

Die $PARTITION Die Funktion gibt die Partitionsnummer zurück, in die ein Satz von Partitionierungsspaltenwerten für eine beliebige angegebene Partitionsfunktion abgebildet würde.

Sie können es daher in Ihrem SELECT verwenden -Anweisung, um die Partition zurückzugeben, zu der jede Zeile gehört.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

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

Ergebnis:

+---------+-------------+-------------+
| 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           |
+---------+-------------+-------------+

In diesem Fall werden die Zeilen auf die Partitionen 2 und 3 verteilt.

Partition 1 ist leer (ebenso wie Partition 4), gemäß der Empfehlung von Microsoft, Partitionen an beiden Enden leer zu lassen, um Datenbewegungen zu vermeiden, falls Partitionen geteilt oder zusammengeführt werden.