Po przeczytaniu pytań i odpowiedzi z tej witryny na temat indeksów przyszło mi do głowy pytanie.
Co, jeśli używa się tabeli wymiarów czasowych, przy czym niższy poziom szczegółowości to dzień. Gdzie należy umieścić indeksy?
Randy Melder w pytaniu: Co oznacza „indeks” w RDBMS? powiedział:
Traktuj indeks jako „spis treści” ... czyli uporządkowaną listę wskaźników do pozycji w pliku, czyli przesunięć
W przypadku wymiaru czasu większość badań danych może być przeprowadzona dla określonego dnia, określonego tygodnia, określonego miesiąca lub określonego kwartału, jeśli tabela czasu przechowuje cały dzień dla unikalnego roku .
Moje pytanie brzmi: czy należy umieścić indeksy dla wszystkich tych pól?
Dzień ma być wyjątkowy, dlatego doskonale rozumiem użycie indeksów. Ale identyfikator tygodnia będzie miał 7 wystąpień , identyfikator miesiąca będzie miał 30/31 wystąpień , identyfikator kwartalny będzie miał mniej więcej 120 wystąpień .
- Czy należy nadal umieszczać indeksy dla tych pól?
- Czy nadal będzie przydatny?
Proszę o to, ponieważ w tym samym pytaniu David Spillett powiedział:
Dodanie zbyt wielu indeksów może być złą optymalizacją, ponieważ dodatkowa przestrzeń używana do przechowywania indeksów (i obciążenie IO do ich utrzymania, jeśli twoja baza danych widzi wiele operacji zapisu) może być gorszym problemem niż nieco mniej optymalne zapytania odczytu , więc nie przesadzaj.
Więc jakie byłyby najlepsze rozważania w przypadku wymiaru czasu?