Visualizações de particionamento no SQL
-
25-09-2019 - |
Pergunta
Como faço para particionar uma visualização indexada no MS-SQL? Eu tenho uma visualização de índice criada que armazena a faixa de valores. A definição de visualização é a seguinte
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)
Agora eu quero particionar esta tabela usando a coluna Data. Como faço isso ?
Solução
Você parece estar procurando um índice "alinhado à partição"; O particionamento é suportado na SQL 2008 Enterprise Edition (você não mencionou sua versão ou edição). Os índices particionados são discutidos nos livros on -line, mas não há discussão sobre os índices de visualização de particionamento que eu posso encontrar, embora seja possível e seja descrito em um white paper aqui (consulte a Query 11 no final do artigo):
Outras dicas
Tenho pouca experiência com a partição, mas acho que você está confundindo as coisas. (Gurus, por favor me corrija se estiver errado).
Tanto quanto eu sei, existem Três tipos de partição no SQL Server:
UMA Tabela particionada pode ser particionado em uma coluna como a data.
UMA visão particionada é uma visão especificando um UNION
entre consultas semelhantes de diferentes tabelas.
UMA Vista indexada alinhada em parto é uma visão indexada que é particionada ao longo da mesma coluna (s) da tabela particionada à qual está vinculada.
Não acho que seja possível particionar uma visão indexada sem particionar a tabela subjacente. Portanto, eu sugeriria que você participe seu day_dim
no date_time
coluna e, em seguida, crie uma visualização indexada alinhada à partição para corresponder a esta coluna. Ver Este link e role para baixo até a consulta 11 Para um exemplo de como fazer isso.