Vraag : Te langzame vraag

De beste Deskundigen,

The na vraag vergt uit te voeren seconden 30+.  Hoe kan ik het tot minder dan 1 tweede verzenden?

DECLARE @variable_one VARCHAR (4) PLAATSTE @variable_one = 'xyz'< br/>DECLARE @total LIJST (totale VLOTTER)

INSERT IN @total (SOM totale)
SELECT (T.table1)
FROM table1 T
JOIN table2 M OP M.M_ID = T.M_ID
JOIN table3 P OP P.E_ID = M.B_E_ID EN P.DEPARTMENT = @variable_one
WHERE [status] IN („w“, „p“) @total_fig de REEKS van de VLOTTER
AND T.flag='B'

DECLARE @total_fig = (UITGEZOCHT totaal VAN @total)
SELECT P.E_NAME zoals [naam], ((SOM (T.table1)/@total_fig)) * 100 zoals [waarde], SOM (T.table1) zoals [cijfer]
FROM table1 T
JOIN table2 M OP M.M_ID = T.M_ID
JOIN table3 P OP P.E_ID = M.B_E_ID EN P.DEPARTMENT = @variable_one
WHERE [status] IN („w“, „p“)
AND T.flag = 'B'
GROUP DOOR P.E_NAME
ORDER DOOR P.E_NAME

Antwoord : Te langzame vraag

Ik zou niet proberen om zowel trekkers als het gebruik van een gegevenslaag zoals nhibernate te combineren - u gaat altijd synchronisatieproblemen krijgen. nHibernate is bedoeld om uw gegevens te beheren - en uw bedrijfslaag zou processen moeten beheren zoals het bijwerken van uw prijzen. Persoonlijk ga ik niet dichtbij trekkers voor enige bedrijfslogica - voor controle misschien, maar niets anders. Ik denk zij bedrijfslogica verduisteren en het nigh op onmogelijk maken om andere codeoplossingen uit te voeren voor het beheren van de gegevens - zoals u vindt.
Waarom uw trekkercode in een opgeslagen procedure de procedure van binnen het transactiewerkingsgebied van de roepen niet bewegen en update als de „gebeëindigde“ vlag waar is? Ik zou dit binnen de bedrijfslaag leiden, maar u kon dit naar de gegevenslaag verplaatsen als u dit wenst.

Tim
Andere oplossingen  
 
programming4us programming4us