Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornar o número da partição para cada linha ao consultar uma tabela particionada no SQL Server (T-SQL)


Se você tem uma tabela particionada no SQL Server e agora deseja executar uma consulta que inclua o número da partição em cada linha retornada pela consulta, você pode usar o $PARTITION função do sistema para fazer exatamente isso.

A $PARTITION A função retorna o número da partição na qual um conjunto de valores de coluna de particionamento seria mapeado para qualquer função de partição especificada.

Você pode, portanto, usá-lo em seu SELECT instrução para retornar a partição à qual cada linha pertence.

Exemplo


Aqui está um exemplo para demonstrar.
SELECT 
    CatId,
    CatName,
    $PARTITION.CatsPartitionFunction(CatId) AS [Partition]
FROM Cats;

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

Nesse caso, as linhas são distribuídas entre as partições 2 e 3.

A partição 1 está vazia (assim como a partição 4), de acordo com a recomendação da Microsoft de deixar as partições em ambas as extremidades vazias, para eliminar a movimentação de dados caso as partições sejam divididas ou mescladas.