テーブルに800レコードあり、4つのテーブルから20フィールド以上を更新するトリガーを使用しましたが、変更を更新するには非常に時間がかかりますが、計算フィールドは高速ですが使用できません他のテーブルからフィールドデータを取得/更新するためのフィールドを計算します。他にどんな方法がありますか?私はショーしようとしたの下トリガーを高速化する方法
は私がフィールド私は別のテーブルからフィールドデータを更新するために使用することができ、他のどのようなオプション
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
を更新しようとしている方法ですか?
はこちらをご覧ください挿入、削除の速度を向上させることがあります。http://stackoverflow.com/questions/42780910/sql-taking-too-much-time -for-execution-a-query/42781448#42781448。それはあなたが不足しているインデックスを持っているようだ –
カルロスありがとうが、私はデータベースエンジンチューニングアドバイザーを使用することができます。なぜなら私はエクスプレス版を持っているからです。 – Joe
ほとんどのトリガーには、少なくとも 'inserted'または' deleted'行への参照があります。 – HABO