Questione : Domanda troppo lenta

I cari esperti, domanda seguente del

The richiede i secondi 30+ per eseguire.  Come posso accelerarlo fino a meno di 1 secondo?

DECLARE @variable_one VARCHAR (4) STABILITO @variable_one = 'xyz'< Br/>DECLARE @total TABELLA (GALLEGGIANTE totale)

INSERT IN @total
SELECT SOMMA (T.table1)
FROM table1 T
JOIN table2 m. SU M.M_ID = T.M_ID
JOIN table3 P SU P.E_ID = M.B_E_ID E P.DEPARTMENT = @variable_one
WHERE [condizione] IN (“w„, “p ")
AND T.flag='B'< Br/>
DECLARE @total_fig GALLEGGIANTE STABILITO @total_fig = (totale PRESCELTO da @total)
SELECT P.E_NAME come [nome], ((SOMMA (T.table1)/@total_fig)) * 100 come [valore], SOMMA (T.table1) come
FROM table1 T
JOIN table2 m. [della figura] SU M.M_ID = T.M_ID
JOIN table3 P SU P.E_ID = M.B_E_ID E P.DEPARTMENT = @variable_one
WHERE [condizione] DENTRO (“w„, “")
AND di p T.flag = 'Br/>GROUP del B'< da P.E_NAME
ORDER da P.E_NAME
class= del

Risposta : Domanda troppo lenta

Non tenterei di unire entrambi gli inneschi e l'uso di uno strato di dati quale nhibernate - state andando sempre ottenere i problemi di sincronizzazione. il nHibernate è inteso per dirigere i vostri dati - ed il vostro strato di affari dovrebbe dirigere i processi come aggiornamento dei vostri prezzi. Personalmente non vado vicino agli inneschi per alcuna logica di affari - per la verifica forse, ma a nient'altro. Penso che oscurino la logica di affari e la rendano nigh su impossible realizzare altre soluzioni di codice per il controllo dei dati - come state trovando.
Perché non entrare il vostro codice di innesco in una procedura immagazzinata e denominare la procedura dall'interno della portata di transazione dell'aggiornamento se “rifinisse„ la bandierina è allineare? Dirigerei questo all'interno dello strato di affari, ma potreste spostare questo verso lo strato di dati se desiderate.

Tim
Altre soluzioni  
 
programming4us programming4us