Cuestión : Pregunta demasiado lenta

Los estimados expertos, pregunta de siguiente del

The tardan los segundos 30+ para ejecutar.  ¿Cómo puedo apresurarlo hasta menos de 1 segundo?

DECLARE @variable_one VARCHAR (4) DETERMINADO @variable_one = 'xyz'< Br/>DECLARE @total TABLA (FLOTADOR total)

INSERT EN @total
SELECT SUMA (T.table1)
FROM table1 T
JOIN table2 M EN M.M_ID = T.M_ID
JOIN table3 P EN P.E_ID = M.B_E_ID Y P.DEPARTMENT = @variable_one
WHERE [estado] EN (“w”, “p ")
AND T.flag='B'< Br/>
DECLARE @total_fig FLOTADOR DETERMINADO @total_fig = (total SELECTO de @total)
SELECT P.E_NAME como [nombre], ((SUMA (T.table1)/@total_fig)) * 100 como [valor], SUMA (T.table1) como
FROM table1 T
JOIN table2 M [de la figura] EN M.M_ID = T.M_ID
JOIN table3 P EN P.E_ID = M.B_E_ID Y P.DEPARTMENT = @variable_one
WHERE [estado] ADENTRO (“w”, “")
AND de p T.flag = 'Br/>GROUP del B'< POR P.E_NAME
ORDER POR P.E_NAME
class= del

Respuesta : Pregunta demasiado lenta

No intentaría combinar ambos disparadores y el uso de una capa de datos tal como nhibernate - usted va siempre a conseguir problemas de sincronización. el nHibernate se piensa para manejar sus datos - y su capa del negocio debe manejar procesos tales como puesta al día de sus precios. Personalmente no voy cerca de los disparadores para ninguna lógica de negocio - para revisar quizás, sino nada. Pienso que obscurecen lógica de negocio y que la hacen nigh en imposible ejecutar otras soluciones del código para manejar los datos - como usted está encontrando.
¿Por qué no trasladarse su código del disparador a un procedimiento almacenado y llamar el procedimiento dentro del alcance de la transacción de la actualización si “acabó” la bandera es verdad? Manejaría esto dentro de la capa del negocio, pero usted podría mover esto a la capa de datos si usted desea.

Tim
Otras soluciones  
 
programming4us programming4us