problem z prostym zapytaniem

0

Cześć, proszę o pomoc z poniższym zapytaniem. Wykonuje mi się ono już 4 godziny i bez efektu..

Select
sk.Brand,
da.WeekStartDay,
lk.LL_Day,
   sum(units) ilość,
   sum(Revenue) przychód
     

	  from         [dwh].[DWH].[FactSales] fs
left join    [DWH].[DimProductSKUE] skue    on fs.DimProductSKUE_ID = skue.ID
left join    [DWH].[DimProductSKU] sku      on skue.DimProductSKU_ID = sku.ID
left join    [DWH].[DimProductSK] sk        on sku.DimProductSK_ID = sk.ID
left join	   [DWH].[FactLL] lk			on fs.dimdate_id = lk.DimDate_ID
left join	 [DWH].[DimLocalization] ll	on fs.DimLocalization_ID = ll.ID
left join	 [DWH].[DimDate] da			on fs.dimdate_id = da.DateID

where da.WeekStartDay >=20180101 and ll.country = 'Poland'
group by sk.Brand, da.WeekStartDay, lk.LL_Day
0

Masz indeksy na polach WeekStartDay i country?

0
serek napisał(a):

Masz indeksy na polach WeekStartDay i country?

Nie mam. Wcześniej nie miałem potrzeby używania SQL'a. Używałem DAX'a. Nie oczekuję, że napiszesz za mnie skrypt a proszę tylko o info czy te indeksy robi się w zapytaniu?

0

Ustawiasz na na polach w tabeli, nie w zapytaniu.

0

Jaka to baza? Z jakich tabel pobierasz kolumny do units i Revenue?

0

Wykonaj na mniejszej ilości danych i sprawdź plan zapytania, zobaczysz co zajmuje najwięcej "czasu". Zwykle potem wystarczy dodać brakujący indeks (lub dodać pole do indeksu istniejącego), ewentualnie zdenormalizować kawałek bazy danych.

0

Jeśli masz WHERE na najbardziej "LEFT" tabelę, to równie dobrze wszystkie LEFT JOIN możesz zamienić na JOIN. Na pewno przyspieszy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1