Hintergrund:
Ich habe eine Faktentabelle in der UAT-Phase. Ziel ist es, 5 Jahre Daten in Prod zu laden (erwartete Größe 400 Mn Datensätze). Derzeit sind nur 2 Jahre Daten in Test.
Tabelleneigenschaften:
- Anzahl der Abmessungen ~ 45
- Maßnahmen ~ 30
- Nicht additive Maßnahmen und andere Spalten ~ 25
- Aktuelle Datengröße ~ 200 Millionen (2-Jahres-Daten)
- Zeitansicht: 3 verschiedene Monatsansichten: Fiscal / Calendar / Adjusted (dh dieselbe Zeile kann in verschiedenen Monaten liegen, je nachdem, nach welcher Ansicht man sucht)
- Ein Benutzer benötigt jeweils nur eine Ansicht. (dh es wird nur eine Monatsspalte in der Abfrage verwendet, was uns daran hindert, die Partitionierung in der Zeitansicht durchzuführen.)
- Indizes: 1 Clustered-Index für die Natural-Schlüssel (8 Spalten) .Erstellte 3 nicht-Clustered-Indizes für jede Monatsspalte, einschließlich weniger Dimension-SKs (FKs) und aller Kennzahlen.
- Aus diesem Grund sind die Indizes riesig (insgesamt 190 GB).
- Speicherplatz ist keine Einschränkung (1 TB zugewiesen)
- 64 GB RAM im Server verfügbar.
- Tabellenkomprimierung ebenfalls durchgeführt.
Anforderung:
Abfragen in dieser Faktentabelle sollten innerhalb von 30 Sekunden zu einem Ergebnis führen (bei allgemeinen Abfragen wird die Summe (Kennzahl) ausgewählt, bei der die Anzahl der Dims nach Dim-Werten gruppiert wird). Berichte werden direkt über dieser Faktentabelle erstellt.
Problem:
Jede Abfrage, die im Index verfügbare Spalten enthält, funktioniert einwandfrei. Wenn wir jedoch andere Spalten einbeziehen, die nicht im Include enthalten sind, ist dies ein Fehler. Es dauert mehr als 5-10 Minuten. Kann jemand eine Lösung vorschlagen, die für jede ausgewählte Dimension / Spalte geeignet ist? Kann die Indexansicht in dieser Situation helfen?