El crear tablas particionadas, es una gran ayuda para mejorar el performance cuando contamos con tablas de millones de registros, pues permite dividir la información en diferentes filegroups. Este es un ejemplo que cubre todo lo necesario para su creación.
Primero debemos de crear una base de datos con diferentes filegroups definidos, que es donde vamos a colocar las particiones de la tabla.
Ahora debemos de crear una funcion del tipo partición, que nos va a dar el rango para cada una de las particiones. En este caso creemos una para particionar los datos por nombre G y N. De esta manera los datos van a quedar divididos en 3 particiones; De la A a la F, de la G a la M y de la N a la Z.
CREATE PARTITION FUNCTION nombrePF(nvarchar(30))
AS RANGE RIGHT
FOR VALUES ('G', 'N')
GO
Ahora creemos un esquema para esta partición, para mapear las particiones a los filegroups
CREATE PARTITION SCHEME nombrePS
AS PARTITION nombrePF TO (fg1,fg2,fg3)
Finalmente podemos crear una tabla particionada en el esquema que creamos para la partición, especificando una columna particionada apropiada, en este caso el nombre.
CREATE TABLE DBASupport.Clientes
(ClienteID int, Nombre nvarchar(30))
ON nombrePS (Nombre)
GO
Ahora podemos insertar la información como normalmente lo hacemos.
INSERT DBASupport.Clientes VALUES (1,’Antonio’)
INSERT DBASupport.Clientes VALUES (1,’Marco’)
INSERT DBASupport.Clientes VALUES (1,’Oscar’)
GO
Podemos usar la función $partition, para verificar que la información a sido automáticamente insertada en su correspondiente filegroup
SELECT Nombre, $partition,nombrePF(Nombre) Partición
FROM DBASupport.Nombre