Vue partitionnée Sql Server pour regrouper plusieurs tables

Comment créer une vue partitionnée avec SQL Server et regrouper les données de plusieurs tables ? Ce script est un exemple simple pour créer une vue qui pointe sur trois tables différentes. Dans cet exemple, chaque table des Ventes contiendrait les ventes d’un mois ou encore d’un trimestre, pour optimiser les performances.

Créer une vue partitionnée SQL Server pour regrouper les données de plusieurs tables 

Voici un exemple de vue partitionnée horizontalement. C’est aussi une vue locale car toutes les données sont stockées sur le même serveur de base de données. Les tables sous-jacentes sont appelées les tables membres de la vue.

CREATE VIEW [dbo].[V_VENTES_P]
AS 
  SELECT [NombreClients], [NombreVentes], [Montant_HT], [Montant_TTC]
  FROM [dbo].[VENTES_01]

  UNION ALL 

  SELECT [NombreClients], [NombreVentes], [Montant_HT], [Montant_TTC]
  FROM [dbo].[VENTES_02]

  UNION ALL 

  SELECT [NombreClients], [NombreVentes], [Montant_HT], [Montant_TTC]
  FROM [dbo].[VENTES_03];

-- etc..

Partitionnement horizontal mensuel d’une vue SQL Server

En effet, pour aller au bout du concept, il suffirait de créer 12 tables avec une table par mois, et ainsi partitionner les données des ventes de façon mensuelle. Par exemple :

  • Janvier : VENTES_01
  • Février : VENTES_02
  • Mars : VENTES_03
  • Avril : VENTES_04
  • Mai : VENTES_05
  • Juin : VENTES_06
  • Juillet : VENTES_07
  • Aout : VENTES_08
  • Septembre : VENTES_09
  • Octobre : VENTES_10
  • Novembre : VENTES_11
  • Décembre : VENTES_12

Partitionnement horizontal trimestriel d’une vue MS SQL

Ou encore un partitionnement des chiffres de ventes par trimestre :

  • Premier trimestre : VENTES_Q1
  • Deuxième trimestre : VENTES_Q2
  • Troisième trimestre : VENTES_Q3
  • Quatrième trimestre : VENTES_Q4

Créer une vue partitionnée annuellement avec un script T-SQL

Toutefois, un modèle largement utilisé est le partitionnement par années. En effet, les années passées sont rarement ou très peu utilisées, ce qui améliore considérablement les performances lors des requêtes sur les données de l’année en cours. Comme par exemple :

  • D’abord, l’Année 2020 et passées: VENTES_2020
  • Année 2021: VENTES_2021
  • Année 2022: VENTES_2022
  • Enfin, l’année 2023 et futures: VENTES_2023

Cependant, ce partitionnement annuel implique de gérer l’insertion des données dynamiquement sur l’année adéquate en fonction de la date effective des données concernées.

Paradoxalement, noter qu’il est possible d’insérer des données dans une vue SQL Server. C’est à dire que les données seront insérées directement dans la table source de la vue. Evidemment, seules les colonnes présentes dans la vue sont accessible depuis la commande Insert Into.

Ce cette manière, une requête filtrée sur un mois particulier ne récupère que les données sur une seule table. Voici en outre comment créer une table avec SQL Server.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*