- PR -

ストアド、トリガの処理速度について

1
投稿者投稿内容
ジェリー
会議室デビュー日: 2005/09/14
投稿数: 11
お住まい・勤務地: 兵庫県
投稿日時: 2005-12-13 14:46
SQLServerに.NETで作成したからプログラムから
SQLでテーブルを更新してから、
ストアドをキックしてそのデータを下に他の2つのテーブルに更新して
そのうち1つのテーブルのトリガで3つのテーブルを更新
するのに10000件のデータで4時間ほどかかります。

.netから1つのテーブルに更新するのに約30分かかっていますので、
ストアド、トリガに3時間30分ほどかかっていると思います。

ストアド、トリガの処理が
なぜ遅くなってしまっているのか知りたいのですが、
調べても良くわかりません。
これは仕方のないことでしょうか?

ご存知の方ご教授いただけますか。
よろしくお願いします。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-12-13 17:17
ストアドとトリガの詳細な処理内容が分からないとなんともいえないのですが、処理内容によってはありえますね。
どの処理に時間がかかるかは分かりませんが10000件発生するトリガでパフォーマンスに問題が生じているとすると、トリガではなくすべてストアドプロシージャーで処理することにより改善できるかもしれません。
ジェリー
会議室デビュー日: 2005/09/14
投稿数: 11
お住まい・勤務地: 兵庫県
投稿日時: 2005-12-13 17:24
アドバイス有難うございます。

トリガもストアドのサーバー側での処理なので
あまり違わないと思っていたのですが、
トリガよりもストアドプロシージャーのほうが、
処理が早いのでしょうか?

無知で申し訳ありません。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-12-13 17:36
ストアドプロシージャーの中でひとつのトランザクションと処理で一括して行えばかなり高速化できると思います。
現在は挿入のたびにトリガが発生するようなので呼び出しのオーバーヘッドがかなりかかっているのではないでしょうか。
とはいえこれは推測でしかないのですが・・・。
ジェリー
会議室デビュー日: 2005/09/14
投稿数: 11
お住まい・勤務地: 兵庫県
投稿日時: 2005-12-13 17:42
Anthyhimeさん、有難うございます。
試してみます。
1

スキルアップ/キャリアアップ(JOB@IT)