- - PR -
SQLServer2000 ストアド内の検索処理が遅い
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-29 15:08
SQLServer2000のストアドプロシージャで困っています。
ストアド内で、カーソルを作るためにSELECT文を書いています。 管理テーブルと明細テーブルを結合して読んでいるのですが、データ量が多いために、その部分だけで約90秒かかっていました。 抽出条件として、管理テーブルにある売上日から今日の分を対象としています。 (SELECT句は省略) FROM 管理 INNER JOIN 明細 ON 管理.管理 = 明細.管理 AND 管理.売上日 = 明細.売上日 WHERE 管理.売上日 = @Ymd ←(@Ymdはストアド起動時に渡すパラメータです。) 上記のSQLの高速化を狙い、管理.売上日にインデックスを貼りました。 結果、このSQLだけをクエリアナライザで実行したところ9秒に短縮されました。 しかし、ストアドを実行すると7分ほどかかるようになってしまいました。 調べたところ、上記のSQLを使ったカーソルを作成する部分で6分ほどかかっている結果となりました。 整理しますと、 1.インデックスを貼ったことにより遅かったSQLは、単体で実行すると速くなっている。 2.速くなっているはずのSQLを、ストアドプロシージャ内で実行すると遅くなっている。 3.ストアドプロシージャ内はインデックスが邪魔になる? となりました。 ストアドプロシージャ内でインデックスが障害になるケースって、何が原因で起こるものなのでしょうか? 尚、SQLをクエリアナライザで実行したときの実行プランには、正常なインデックスを使っている表示はでました。 どなたか同じようなケースに出会った方はいらっしゃいませんでしょうか? よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2008-10-29 16:05
"ストアド 実行計画"で検索したら、以下のスレッドが見つかりました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=38608&forum=7&start=0
あとこちらも参考になるかと。 http://support.microsoft.com/kb/401920/ja
| ||||||||||||
|
投稿日時: 2008-10-30 16:57
>dodoさん ありがとうございます。 リンク先を参考にしましたが変わらなかったです。 ただ、近いような気はします。 1度実行した後、続けて同じストアドを実行すると段違いに速くなっています。 この実行計画をいつも持っていれば良いのですが… |
1