Contexte:
J'ai une table de faits en phase UAT. Objectif de charger 5 ans de données dans Prod (taille attendue 400 Mn d'enregistrements). Actuellement, il n'a que 2 ans de données en test.
Caractéristiques de la table:
- Nombre de dimensions ~ 45
- Mesures ~ 30
- Mesures non additives et autres colonnes ~ 25
- Taille actuelle des données ~ 200 millions (données sur 2 ans)
- Affichage de l'heure: 3 vues de mois différentes: fiscales / calendrier / ajustées (c'est-à-dire que la même ligne peut tomber dans des mois différents en fonction de la vue recherchée)
- Une seule vue sera requise à la fois par un utilisateur. (c'est-à-dire qu'une seule colonne de mois sera utilisée dans la requête, cela nous empêche de faire le partitionnement sur la vue temporelle)
- Index: 1 index groupé sur les clés naturelles (8 colonnes) .Créé 3 couvrant les index non groupés un sur chaque colonne de mois, y compris quelques dimensions SK (FK) et toutes les mesures).
- Les index sont énormes (190 Go au total) pour cette raison.
- L'espace n'est pas une contrainte (1 To alloué)
- 64 Go de RAM disponibles sur le serveur.
- La compression de table a également été effectuée.
Exigence: Les
requêtes sur ce tableau de faits doivent donner un résultat dans les 30 secondes (les requêtes générales sélectionnent la somme (mesure) joignant quelques groupes Dims par valeurs Dim). Les rapports se font directement en haut de ce tableau de faits.
Problème:
toute requête qui inclut des colonnes disponibles dans l'index fonctionne très bien, mais si nous incluons d'autres colonnes qui ne sont pas dans le include..It suce. Cela prend plus de 5 à 10 minutes. Quelqu'un peut-il suggérer une solution où cela fonctionne bien pour n'importe quelle dimension / colonne que nous sélectionnons. Index peut-il voir l'aide dans cette situation?
la source