Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Restituire il numero di partizione per ogni riga quando si esegue una query su una tabella partizionata in SQL Server (T-SQL)

Se hai una tabella partizionata in SQL Server e ora vuoi eseguire una query che includa il numero di partizione su ogni riga restituita dalla query, puoi utilizzare $PARTITION funzione di sistema per fare proprio questo.

Il $PARTITION funzione restituisce il numero di partizione in cui verrebbe mappato un insieme di valori di colonne di partizionamento per qualsiasi funzione di partizione specificata.

Puoi quindi usarlo nel tuo SELECT istruzione per restituire la partizione a cui appartiene ciascuna riga.

Esempio

Ecco un esempio da dimostrare.

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

Risultato:

+---------+-------------+-------------+
| 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 questo caso, le righe sono distribuite tra le partizioni 2 e 3.

La partizione 1 è vuota (come la partizione 4), in conformità con la raccomandazione di Microsoft di lasciare vuote le partizioni su entrambe le estremità, per eliminare lo spostamento dei dati negli eventi, le partizioni vengono divise o unite.