Pergunta : Pergunta demasiado lenta

Os caros peritos, pergunta de seguimento do

The tomam os segundos 30+ para executar.  Como posso eu o apressar até menos de 1 segundo?

DECLARE @variable_one VARCHAR (4) AJUSTA-SE @variable_one = 'xyz'< Br/>DECLARE @total TABELA (FLUTUADOR total)

INSERT EM @total
SELECT SOMA (T.table1)
FROM table1 T
JOIN table2 M EM M.M_ID = T.M_ID
JOIN table3 P EM P.E_ID = M.B_E_ID E P.DEPARTMENT = @variable_one
WHERE [status] EM (“w”, “p ")
AND T.flag='B'< Br/>
DECLARE @total_fig FLUTUADOR AJUSTADO @total_fig = (total SELETO de @total)
SELECT P.E_NAME como [nome], ((SOMA (T.table1)/@total_fig)) * 100 como [valor], SOMA (T.table1) como o
FROM table1 T
JOIN table2 M [da figura] EM M.M_ID = T.M_ID
JOIN table3 P EM P.E_ID = M.B_E_ID E P.DEPARTMENT = @variable_one
WHERE [status] DENTRO (“w”, de “")
AND p T.flag = 'Br/>GROUP do B'< por P.E_NAME
ORDER por P.E_NAME
class= do

Resposta : Pergunta demasiado lenta

Eu não tentaria combinar ambos os disparadores e o uso de uma camada de dados tal como o nhibernate - você está indo sempre começ problemas de sincronização. o nHibernate é pretendido controlar seus dados - e sua camada do negócio deve controlar processos tais como a atualização de seus preços. Pessoal eu não vou perto dos disparadores para nenhuma lógica de negócio - para examinar talvez, mas de nada mais. Eu penso que obscurecem a lógica de negócio e a fazem nigh em impossível executar outras soluções do código para controlar os dados - como você está encontrando.
Por que não mover seu código do disparador em um procedimento armazenado e chamar o procedimento dentro do espaço da transação da atualização se “terminou” a bandeira é verdadeiro? Eu controlaria este dentro da camada do negócio, mas você poderia mover este para a camada de dados se você deseja.

Tim
Outras soluções  
 
programming4us programming4us