• 締切済み

ストアドの速度がクエリの30倍遅いです

お世話になっております ・サーバ:Windows2008R2+SQLServer2012 ・クライアント:Windows7 上記環境にて、クライアントのSSMS上で、 あるストアドプロシジャを実行すると丁度2分程かかります。 (これをスピードアップさせるのが目的です)  exec hoge para1,para2 同じく、SSMSで「新しいクエリ」を作成して、 そのストアドプロシジャの実行部分だけを 貼り付け、パラメタだけを指定して実行すると4秒で終わります。  declare @para1 smallint  declare @para2 smallint  set @para1 = 1  set @para2 = 2  (以下ストアド内のSQLを貼り付け) 「SET ARITHABORT ON」を付加しても 全く変化がありませんでした。 なぜこのような事が起こるのか、見当がつかず、困り果てています。 対応方法等ご存じの方がいらっしゃいましたら お知恵を拝借したく、よろしくお願いいたします。

みんなの回答

回答No.1

一般論として 一番考えられるのがコンパイルが動作する場合ですね。 ストアドプロシャを修正後 最初の実行はコンパイルされるので、少し時間がかかります。 二回目以降は速くなります。 質問の内容からこのケースに該当するかどうかは不明ですが、 コンパイルされる条件は他にもいくつかあるようです。 以下も参考にしてください。 http://engineermemo.wordpress.com/2013/08/02/%E3%82%B9%E3%83%88%E3%82%A2%E3%83%89%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%AE%E3%83%AA%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

akiaki2
質問者

お礼

アドバイスありがとうございます。 ご指摘いただいた通り、 何度かリコンパイルも行ってみましたが、 残念ながら改善はされませんでした。 ダメもとで削除&再作成しても同様でした。 もうしばらく調べてみます。 ありがとうございました。