2017-04-22 7 views
1

Ich habe 800 Datensätze in einer Tabelle, ich verwendete Trigger, um mehr als 20 Felder aus 4 Tabellen zu aktualisieren, aber sehr langsam dauert bis zu 25 Sekunden, um Änderungen zu aktualisieren, ich weiß, dass berechnete Felder schneller sind, aber ich kann nicht verwenden Berechnete Felder zum Abrufen/Aktualisieren von Felddaten aus einer anderen Tabelle. Welche anderen Methoden kann ich verwenden? wie man Trigger beschleunigt

unten habe ich versucht zu zeigen, wie ich bin versucht Feld Aktualisierung

create TRIGGER [dbo].[WO-WHLINFO] 
    ON [dbo].[WORKORDERS] 
    AFTER INSERT,UPDATE 
    AS 
    BEGIN IF TRIGGER_NESTLEVEL() > 1 
    RETURN  UPDATE T1 
     SET [C/S ANGLE2]=T2.[C/S ANGLE2], 
       [BH SIZE2]=T2.[BH SIZE2], 
       [COLOR]=T2.[COLOR], 
       [MRP Wheel]=T2.[STOCK NO],  
       [WO PN]=T2.[WHL-ASSY LOOKUP] 

      FROM WORKORDERS T1 CROSS APPLY (SELECT TOP 1 * 
      FROM [WHl] T2 
      WHERE [WHEEL PN 1]=T2.[WHL-ASSY LOOKUP] OR 
        [WHEEL PN 1-S]= T2.[STOCK NO]) T2 
      END 

welche anderen Optionen i verwenden können, um Felddaten aus einer anderen Tabelle zu aktualisieren?

+0

einen Blick hier nehmen: http://stackoverflow.com/questions/42780910/sql-taking-too-much-time -for-Ausführen einer Abfrage/42781448 # 42781448. Es scheint, Sie haben einen fehlenden Index –

+0

Vielen Dank Carlos, aber ich kann Database Engine Tuning Berater verwenden. weil ich Express-Ausgabe habe – Joe

+1

Die meisten Trigger haben mindestens einen Verweis auf "eingefügt" oder "gelöschte" Zeilen. – HABO

Antwort

0

Bitte versuchen Index-Tabelle zu erstellen, kann dies die Geschwindigkeit der das Einfügen und Löschen erhöhen

+0

mit welchem ​​Spaltennamen oder wie kann ich Spalte auswählen, Index anzuwenden? Composite-Index für alle Spalte hat keinen Einfluss auf irgendetwas? – Joe

+0

I ERSTELLT Index der Pk des als CREATE NONCLUSTERED INDEX [speedup_trigger] ON [dbo] verwenden. [Arbeitsaufträgen] ( \t [PO #] ASC, \t [WORK ORDER #] ASC, \t [CUSTOMER] ASC, \t [SO NUMBER] ASC, \t [SO DATE] ASC, \t [VERSPRACH DATE] ASC, \t [ID] ASC ) mit (PAD_INDEX = AUS, STATISTICS_NORECOMPUTE = AUS, SORT_IN_TEMPDB = AUS, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) GO' aber nichts verändert – Joe