Partitionnement Vues dans sql
-
25-09-2019 - |
Question
Comment partitionner un Indexed Voir dans MS-SQL? J'ai une vue d'index créé qui stocke plage de valeurs. La définition de la vue est la suivante
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)
Maintenant, je veux diviser ce tableau en utilisant la colonne de date. Comment puis-je faire?
La solution
Vous semblez être à la recherche d'un indice « aligné partition »; le partitionnement est pris en charge dans SQL Server 2008 Enterprise Edition (vous ne l'avez pas mentionné votre version ou édition). Les index partitionnés sont décrits dans la documentation en ligne, mais il n'y a pas de discussion sur le partitionnement des index de vue que je peux trouver, bien qu'il soit possible et il est décrit dans un livre blanc ici (voir requête 11 à la fin du document):
Autres conseils
J'ai peu d'expérience avec le partitionnement, mais je pense que vous êtes confus choses. (Gurus, s'il vous plaît me corriger si je me trompe).
Pour autant que je sais qu'il ya trois types de partitionnement SQL Server:
table partitionnée peut être partitionné sur une colonne, comme la date.
vue partitionnée est une vue spécifiant un UNION
entre les requêtes similaires de différentes tables.
vue indexée partioned alignés est une vue indexée qui est réparti le long de la même colonne (s) en tant que la table partitionnée à laquelle elle est liée.
Je ne pense pas qu'il est possible de partitionner une vue indexée sans partage de la table sous-jacente. Par conséquent, je vous suggère de partitionner votre day_dim
sur la colonne date_time
, puis créer une vue indexée alignées sur les partitions pour correspondre cette colonne. Voir ce lien et faites défiler vers le bas pour Interroger 11 pour un exemple comment faire.