sql >> Databasteknik >  >> RDS >> Sqlserver

Returnera partitionsnumret för varje rad när du frågar efter en partitionerad tabell i SQL Server (T-SQL)

Om du har en partitionerad tabell i SQL Server och du nu vill köra en fråga som inkluderar partitionsnumret på varje rad som returneras av frågan, kan du använda $PARTITION systemfunktion för att göra just det.

$PARTITION funktion returnerar partitionsnumret till vilket en uppsättning partitioneringskolumnvärden skulle mappas för en specificerad partitionsfunktion.

Du kan därför använda den i din SELECT för att returnera den partition som varje rad tillhör.

Exempel

Här är ett exempel att visa.

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

Resultat:

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

I det här fallet är raderna fördelade mellan partitionerna 2 och 3.

Partition 1 är tom (liksom partition 4), i enlighet med Microsofts rekommendation att lämna partitioner i båda ändarna tomma, för att eliminera datarörelse i händelse av att partitioner delas eller slås samman.


  1. formatera intervall med to_char

  2. Beräknar procentsatser med GROUP BY-fråga

  3. SQL delar upp värden till flera rader

  4. 2 funktioner som returnerar månaden från ett datum i Oracle