sql >> Base de Datos >  >> RDS >> Sqlserver

Devuelva el número de partición para cada fila al consultar una tabla particionada en SQL Server (T-SQL)

Si tiene una tabla particionada en SQL Server y ahora desea ejecutar una consulta que incluya el número de partición en cada fila devuelta por la consulta, puede usar el $PARTITION función del sistema para hacer precisamente eso.

La $PARTITION devuelve el número de partición en el que se asignaría un conjunto de valores de columna de partición para cualquier función de partición especificada.

Por lo tanto, puede usarlo en su SELECT instrucción para devolver la partición a la que pertenece cada fila.

Ejemplo

Aquí hay un ejemplo para demostrarlo.

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

En este caso, las filas se distribuyen entre las particiones 2 y 3.

La partición 1 está vacía (al igual que la partición 4), de acuerdo con la recomendación de Microsoft de dejar las particiones vacías en ambos extremos, para eliminar el movimiento de datos en caso de que las particiones se dividan o fusionen.