Tło:
Mam tabelę faktów w fazie UAT. Cel, aby załadować 5 lat danych do Prod (oczekiwany rozmiar rekordów 400 Mn). Obecnie ma tylko 2 lata danych w teście.
Funkcje stołu:
- Liczba wymiarów ~ 45
- Środki ~ 30
- Miary nieaddytywne i inne kolumny ~ 25
- Obecny rozmiar danych ~ 200 milionów (dane z 2 lat)
- Widok czasu: 3 różne widoki miesiąca: Fiskalny / Kalendarz / Skorygowany (tj. Ten sam wiersz może przypadać w różnych miesiącach, w zależności od tego, którego widoku szukasz)
- Użytkownik będzie wymagał tylko jednego widoku na raz. (tzn. w zapytaniu zostanie użyta tylko jedna kolumna miesiąca, co powstrzymuje nas przed partycjonowaniem w widoku czasu)
- Indeksy: 1 indeks klastrowany na klawiszach naturalnych (8 kolumn). Utworzono 3 obejmujące indeksy nieklastrowane po jednym na kolumnę każdego miesiąca, w tym kilka SK wymiarów (FK) i wszystkie miary).
- Z tego powodu indeksy są ogromne (łącznie 190 GB).
- Miejsce nie jest ograniczeniem (przydzielono 1 TB)
- 64 GB pamięci RAM dostępnej na serwerze.
- Wykonano również kompresję tabeli.
Wymaganie:
Kwerendy w tej tabeli faktów powinny dać wynik w ciągu 30 sekund (zapytania ogólne wybierają sumę (miarę) łączącą kilka grup Dims według wartości Dim). Raporty są sporządzane bezpośrednio na podstawie tabeli faktów.
Problem:
każde zapytanie zawierające kolumny dostępne w Indeksie działa poprawnie, ale jeśli uwzględnimy inne kolumny, których nie ma w Uwzględnij ... To jest do bani. Zajmuje to więcej niż 5-10 minut. Czy ktoś może zasugerować jakieś rozwiązanie, w którym działa dobrze dla dowolnego wybranego wymiaru / kolumny. Czy indeks może wyświetlić pomoc w tej sytuacji?
źródło