none
SQLServer2008SP1+ (10.0.2723) のVIEWとSTORED PROC RRS feed

  • 質問

  • 現象:

    ストアド内にはVIEWのSELECT文があるだけです。トランザクションはありません。

    1、何もかえずに、alter viewを実行するとそれを使用しているストアドの動作が極端に遅くなります。
    2、ストアドを止めて、何もかえずにalter procすると、ストアドは通常のスピードで動きます。
    3、再び、alter view後、ストアドを実行するとまた、動作が極端に遅くなります。

    別のバグを追っかけていたら、こんな現象にたどりついたのですが、これを報告しようとすると、有償サポートでないと受付ないと言われてしまいました。
    MSDNののインシデントがあるので、これで受け付けてくれるものなのでしょうか。


    hotcake
    2009年9月3日 9:38

回答

  • インシデントを利用して、サポートセンターへDBを送り確認してもらいました。

    結論は、最適化による挙動ということになりました。

    ------------------------------------------------------------------
    CREATE PROC SP_TEST
     @PRM1 VARCHAR(10),
     @PRM2 VARCHAR(10)
    AS

    IF ...
    BEGIN
     SET @PRM1 = 'AAA'
     SET @PRM2 = 'BBB'
    END

    ...

    SELECT ...
    FROM ...
    WHERE
     CD BETWEEN @PRM1 AND @PRM2
    -------------------------------------------------------------------

    EXEC SP_TEST '', ''  -- 条件次第でとても遅くなる

    -------------------------------------------------------------------
    パラメータ値をSP内で代えるな、ということらしいです。

    hotcake
    • 回答としてマーク 服部清次 2009年10月22日 6:24
    2009年9月20日 13:25

すべての返信

  • hotcakeさん、こんにちは。

    テクニカルサポートインシデントの有効範囲については、フォーラムでの正確な回答は難しいので、お手数ですが
    下記のページに記載されている"マイクロソフト サポート 契約センター"で確認していただければと思います。
    Visual Studio with MSDN Subscription テクニカルサポート
    http://msdn.microsoft.com/ja-jp/subscriptions/dd197633.aspx

    参考までに、現状英語での投稿のみ受付となっていますが、ConnectにSQL Serverのフィードバックサイトが用意されています。
    http://connect.microsoft.com/SQLServer/Feedback

    今後ともフォーラムをよろしくお願いします。
    それでは。
    2009年9月9日 9:42
  • SELECT 文しかなくても処理の競合は発生するかもしれません。
    というか、VIEW の SELECT 文を実行中に alter view するというのは
    ちょっと無理っぽさを感じるというか。。

    とりあえず、各スクリプトを提示していただくと意見が出やすいかもしれません。

    • 回答の候補に設定 服部清次 2009年10月22日 6:24
    2009年9月15日 5:35
  • インシデントを利用して、サポートセンターへDBを送り確認してもらいました。

    結論は、最適化による挙動ということになりました。

    ------------------------------------------------------------------
    CREATE PROC SP_TEST
     @PRM1 VARCHAR(10),
     @PRM2 VARCHAR(10)
    AS

    IF ...
    BEGIN
     SET @PRM1 = 'AAA'
     SET @PRM2 = 'BBB'
    END

    ...

    SELECT ...
    FROM ...
    WHERE
     CD BETWEEN @PRM1 AND @PRM2
    -------------------------------------------------------------------

    EXEC SP_TEST '', ''  -- 条件次第でとても遅くなる

    -------------------------------------------------------------------
    パラメータ値をSP内で代えるな、ということらしいです。

    hotcake
    • 回答としてマーク 服部清次 2009年10月22日 6:24
    2009年9月20日 13:25
  • hotcake さん、

    こんにちは!
    フォーラム オペレーターの服部 清次です。
    弊社のサポート窓口にお問い合わせされたとのことで、ご報告ありがとうございます!

    今回、質問者ご自身の回答ではあるのですが、hotcake さんがお問い合わせの結果を報告してくださった投稿に [回答としてマーク] のチェックを付けさせていただきました。
    ぜひこちらの情報を他の方々にも参照していただきたいと思いますので。 (^^)

    また何か困ったことがありましたら、ぜひ TechNet フォーラムをご利用ください。
    今後とも、MSDN/TechNet フォーラムをよろしくお願いします。
    それでは、また! (^_^)/


    __________________________________________________
    マイクロソフト株式会社 フォーラム オペレーター 服部 清次

    2009年10月22日 6:25