2012-04-18 11 views
6

Sto scrivendo una logica complessa per calcolare i bonus delle vendite e dei clienti. Ho milioni di record per calcolare i bonus.Prestazioni del codice: query SQL Server vs C#. Applicazione web n.

Desidero pareri di esperti in modo che le operazioni matematiche non richiedano molto tempo per visualizzare i risultati sulla pagina Web.

Quindi, dove devo scrivere una parte di calcolo? Nelle query di SQL Server (utilizzando stored procedure e funzioni) o ASP.NET & C#. Netto (livello di business logic)?

Qual è la migliore pratica? Elaborazione su server database o elaborazione su server applicazioni?

saluti

Mohsin JK

+1

se * milioni di righe * sono già in un database SQL Server - elaborare i dati lì! Avere una procedura memorizzata genera i risultati, inserirla in una tabella e quindi mostrare semplicemente i risultati da quella tabella nella pagina Web ASP.NET. –

+0

Se il calcolo richiede un uso esteso delle aggregazioni, è possibile dare un'occhiata alle "viste materializzate". http://en.wikipedia.org/wiki/Materialized_view – edze

risposta

4

Se si dispone di milioni di record, suggerirei di scrivere una parte di calcolo in SQL Server poiché i calcoli in Business Layer richiedono più tempo.

Di seguito sono riportati i suggerimenti per migliorare le prestazioni -

  • Scrivere stored procedure
  • creare indici per recuperare i record più rapidamente
  • L'utilizzo di tabelle temporanee se manupulation è per i grandi record

Puoi ricerca su rete per scoprire T-SQL altre tecniche di ottimizzazione delle prestazioni.

+1

Accetto. In aggiunta, suggerirei di prendere in considerazione le funzioni CLR. Per calcoli complessi, il CLR potrebbe essere significativamente più veloce del semplice T-SQL. Oppure potrebbe non essere in questo caso particolare, quindi è necessario eseguire dei test. – VladV

1

ho milioni di record per calcolare i bonus

penso che sia meglio per calcolare in database per evitare di passare grandi quantità di dati dalla database per applicazione.

Problemi correlati