Vistas particionado en sql
-
25-09-2019 - |
Pregunta
¿Cómo particiones en una vista indizada en MS-SQL? Tengo una visión índice creado que almacena rango de valores. La definición de la vista es el siguiente
CREATE VIEW dbo.target_individual_product WITH SCHEMABINDIN
AS SELECT day_dim.date_time AS Date,
SUM(ISNULL(order_dim.quantity,0)) AS Target_Acheived,
branch_dim.branch_name AS Branch_Name ,
product_dim.product_name AS Product_Name
FROM dbo.day_dim INNER JOIN
dbo.order_fact ON day_dim.day_id = order_fact.day_id
INNER JOIN dbo.product_dim ON order_fact.product_id = product_dim.product_id
INNER JOIN dbo.branch_dim ON order_fact.branch_id = branch_dim.branch_id
INNER JOIN dbo.order_dim ON order_fact.order_id = order_dim.order_id
GROUP BY order_dim.quantity, day_dim.date_time,branch_dim.branch_name, product_dim.product_name
GO
CREATE UNIQUE CLUSTERED INDEX target_individual_product_I on target_individual_product (Date)
Ahora quiero particionar esta tabla usando la columna fecha. ¿Cómo lo hago?
Solución
Parece que está en busca de un índice "partición alineados"; partición es compatible con SQL Server 2008 Enterprise Edition (que no menciona su versión o edición). los índices particionados se discuten en los libros en pantalla, pero no hay discusión de la partición de índices de las vistas que puedo encontrar, aunque es posible y es descrito en un libro blanco aquí (ver consulta 11 al final del documento):
Otros consejos
Tengo poca experiencia con el particionado, pero creo que se está confundiendo las cosas. (Gurus, por favor corríjanme si me equivoco).
Por lo que yo sé que hay tres tipos de particiones en SQL Server :
A tabla particionada puede ser particionado en una columna tal como la fecha.
A vista con particiones es una vista en la especificación de un UNION
entre consultas similares de diferentes tablas.
A vista indizada alineado repartió- es una vista indizada que se repartió a lo largo de la misma columna (s) como la tabla con particiones a la que está unida.
No creo que es posible dividir una vista indizada sin partición de la tabla subyacente. Por lo tanto, sugeriría que se particiona el day_dim
en la columna de la date_time
, y luego crear una vista indizada partición alineados para que coincida con esta columna. Ver este enlace y vaya a la consulta 11 para un ejemplo de cómo hacer esto.