Frage : Frage zu langsam

Liebe Experten,

The folgende Frage nimmt Sekunden 30+, um durchzuführen.  Wie kann ich ihn bis zu weniger als 1 zweitem beschleunigen?

DECLARE @variable_one VARCHAR (4) GESETZT @variable_one = 'xyz'< Br/>DECLARE @total TABELLE (Gesamt-HIN- UND HERBEWEGUNG)

INSERT IN @total (Gesamt)
SELECT SUMME (T.table1)
FROM table1 T
JOIN table2 M AUF M.M_ID = T.M_ID
JOIN table3 P AUF P.E_ID = M.B_E_ID UND P.DEPARTMENT = @variable_one
WHERE [Status] IN („w“, „p ")
AND T.flag='B'< Br/>
DECLARE @total_fig HIN- UND HERBEWEGUNG GESETZT @total_fig = (AUSERWÄHLTE Gesamtmenge VON @total)
SELECT P.E_NAME wie [Name], ((SUMME (T.table1)/@total_fig)) * 100 wie [Wert], SUMME (T.table1) als [Abbildung]
FROM table1 T
JOIN table2 M AUF M.M_ID = T.M_ID
JOIN table3 P AUF P.E_ID = M.B_E_ID UND P.DEPARTMENT = @variable_one
WHERE [Status] INNEN („w“, „p ")
AND T.flag = 'B'< Br/>GROUP DURCH P.E_NAME
ORDER DURCH P.E_NAME

Antwort : Frage zu langsam

Ich versuchen nicht, beide Auslöser und den Gebrauch von einer Datenschicht wie nhibernate zu kombinieren - Sie werden immer Synchrounisierungsprobleme erhalten. nHibernate soll Ihre Daten handhaben - und Ihre Geschäftsschicht sollte Prozesse wie Aktualisierung Ihrer Preise handhaben. Persönlich ich gehe nicht nahe Auslösern für irgendeine Geschäftslogik - für möglicherweise revidieren, aber nichts anderes. Ich denke, dass sie Geschäftslogik undeutlich machen und sie nah auf unmöglichem, andere Codelösungen für die Leitung der Daten einzuführen bilden - wie Sie finden.
Warum nicht Ihren Triggercode in ein gespeichertes Verfahren verschieben und das Verfahren innerhalb vom Verhandlungbereich des Updates benennen, wenn Markierungsfahne ist zutreffend „beendete“? Ich handhaben dieses innerhalb der Geschäftsschicht, aber Sie konnten dieses auf die Datenschicht verschieben, wenn Sie wünschen.

Tim
Weitere Lösungen  
 
programming4us programming4us