Sfondo:
ho una tabella dei fatti in fase UAT. Obiettivo caricare 5 anni di dati in Prod (dimensioni previste 400 record Mn). Attualmente ha solo 2 anni di dati in Test.
Caratteristiche del tavolo:
- Numero di dimensioni ~ 45
- Misure ~ 30
- Misure non additive e altre colonne ~ 25
- Dimensione attuale dei dati ~ 200 milioni (dati di 2 anni)
- Time View: 3 diverse visualizzazioni Mese: Fiscale / Calendario / Rettificato (ovvero la stessa riga può cadere in diversi mesi in base alla vista che si sta cercando)
- L'utente richiederà solo una vista alla volta. (ad es. nella query verrà utilizzata solo una colonna del mese, ci sta impedendo di eseguire il partizionamento nella visualizzazione temporale)
- Indici: 1 indice cluster sulle chiavi naturali (8 colonne) .Creato 3 che copre gli indici non cluster uno sulla colonna di ogni mese, inclusi pochi SK dimensione (FK) e tutte le misure).
- Gli indici sono enormi (190 GB in totale) per questo motivo.
- Lo spazio non è vincolo (1 TB assegnato)
- 64 GB di RAM disponibili nel server.
- Anche la compressione della tabella è stata eseguita.
Requisito: le
query su questa tabella dei fatti dovrebbero dare il risultato entro 30 secondi (le query generali selezionano la somma (misura) che unisce alcuni gruppi di dimensioni per i valori di dimensione). I rapporti vengono eseguiti direttamente in cima a questa tabella dei fatti.
Problema:
qualsiasi query che include colonne disponibili nell'indice funziona correttamente, ma se includiamo altre colonne che non sono incluse ... Fa schifo. Ci vogliono più di 5-10 minuti. Qualcuno può suggerire qualche soluzione in cui funziona bene per qualsiasi dimensione / colonna che selezioniamo. Index può visualizzare aiuto in questa situazione?