Partycjonowanie skutkuje uruchomionym zapytaniem o sumy
Szukam szybkiego sposobu na tworzenie zbiorczych sum w dużym zestawie danych programu SQL Server 2008, który jest partycją według konkretnej kolumny, potencjalnie przy użyciurozwiązanie zmienne z wieloma przypisaniami. Jako bardzo prosty przykład chcę utworzyć kolumnę „cumulative_total” poniżej:
user_id | month | total | cumulative_total
1 | 1 | 2.0 | 2.0
1 | 2 | 1.0 | 3.0
1 | 3 | 3.5 | 8.5
2 | 1 | 0.5 | 0.5
2 | 2 | 1.5 | 2.0
2 | 3 | 2.0 | 4.0
Tradycyjnie robimy to w przypadku skorelowanych podkwerend, ale w przypadku dużych ilości danych (ponad 200 000 wierszy i kilku różnych kategorii uruchomionych danych) nie daje to nam idealnej wydajności.
Ostatnio przeczytałem o używaniu wielu zmiennych przypisania do sumowania sumy tutaj:
http://sqlblog.com/blogs/paul_nielsen/archive/2007/12/06/cumulative-totals-screencast.aspx
W przykładzie na tym blogu skumulowane rozwiązanie zmienne wygląda tak:
UPDATE my_table
SET @CumulativeTotal=cumulative_total=@CumulativeTotal+ISNULL(total, 0)
To rozwiązanie wydaje się niezwykle szybkie dla sumowania dla pojedynczego użytkownika w powyższym przykładzie (użytkownik 1 lub użytkownik 2). Jednak muszę efektywnie partycjonować według użytkownika - daj mi łączną sumę według użytkowników według miesięcy.
Czy ktoś wie, jak rozszerzyć koncepcję zmiennej z wieloma przypisaniami, aby rozwiązać ten problem, lub inne pomysły inne niż skorelowane podzapytania lub kursory?
Wielkie dzięki za wszelkie wskazówki.