2012-04-18 13 views
6

Piszę skomplikowaną logikę, aby obliczyć premie sprzedaży i klientów. Mam milion rekordów do obliczania premii.Wydajność kodu: zapytanie SQL Server a aplikacja internetowa C# .Net

Chcę opinii ekspertów, aby operacja matematyczna nie zajmowała dużo czasu, aby wyświetlić wyniki na stronie internetowej.

Więc gdzie muszę napisać część obliczeniową? W zapytaniach SQL Server (przy użyciu zapisanych procedur i funkcji) lub ASP.NET & C# .Net (warstwa Business Logic)?

Która z nich jest najlepszą praktyką? Przetwarzanie na serwerze bazy danych lub przetwarzanie na serwerze aplikacji?

Pozdrowienia

Mohsin JK

+1

jeśli te * miliony rzędów * są już w bazie danych SQL Server - przetwarzaj tam dane! Czy procedura przechowywana generuje wyniki, umieścić go w tabeli, a następnie po prostu pokazać wyniki z tej tabeli na swojej stronie ASP.NET. –

+0

Jeśli obliczenia wymagają szerokiego wykorzystania agregacji, możesz rzucić okiem na "zmaterializowane widoki". http://pl.wikipedia.org/wiki/Materialized_view – edze

Odpowiedz

4

Jeśli masz miliony rekordów, proponuję napisać część obliczeniową w SQL Server, ponieważ obliczenia w warstwie biznesowej znacznie zająć więcej czasu.

Poniżej przedstawiono sugestie, aby poprawić wydajność -

  • zapisu procedury składowane
  • tworzenia indeksów aby pobrać rekordy szybsze
  • użycie tabel tymczasowych jeśli manupulation jest dla wielkich rekordów

Można szukaj w sieci, aby znaleźć T-SQL inne techniki optymalizacji wydajności.

+1

Zgadzam się. Dodatkowo, zasugerowałbym rozważenie funkcji CLR. W przypadku złożonych obliczeń CLR może być znacznie szybszy niż zwykły T-SQL. Lub może nie być w tym konkretnym przypadku, więc testowanie jest konieczne. – VladV

1

mam milion rekordów do obliczeń premii

myślę, że lepiej jest obliczyć je w bazie danych, aby uniknąć przeniesienia dużych ilości danych z baza danych do aplikacji.

Powiązane problemy