none
Viewを作成した場合の応答速度 RRS feed

  • 質問

  • 質問させてください
    SQLServer2000とVisualBasic2003(ASP.NRT)を使用してソフトを作成したのですが
    Visualbasic2003側にてSQLを発行して問い合わせたときに応答が遅い場合
    SQLServer2000側にViewとして登録して登録されたViewをVisualbasic2003側で
    問い合わせたほうが応答速度は少しでも速くなるのでしょうか

    2009年5月28日 7:21

回答

  • View を検索速度を向上されるために使用するという話を、私は聞いたことが無いです。(知らないだけかも知れませんが。)
    それよりも、何故 応答が遅くなるのかについてもう少し、調査をされたほうが良いような気がします。

    例えば、アプリケーションから実行すると遅いが、クエリアナライザから実行すると早い、 このパラメータを指定すると早いが、このパラメータを指定すると極端に遅いなどですかね。
    • 回答としてマーク sk7474 2009年6月10日 9:09
    2009年5月28日 11:56
  • 自分もViewは、セキュリティ的な利点と実装時の簡易性としか認識していなかったのですが、
    パフォーマンス向上にも効果があるようです。
    ポイントは、ViewとViewにつけるインデックスにあるようです。

    参考:SQL Server 2005 インデックス付きビューによるパフォーマンスの向上
    SQL Server 2000 で、SQL Server のビュー機能が拡張され、システム パフォーマンス上のメリットを提供できるようになりました。
    一意クラスタ化インデックスや非クラスタ化インデックスをビューに作成することで、最も複雑なクエリのデータ アクセス パフォーマンス
    を向上させる
    ことができます。
    SQL Server 2000 と 2005 では、一意クラスタ化インデックスが設定されたビューを、インデックス付きビューと呼びます。

    ビューに一意クラスタ化インデックスが設定されると、ビューの結果セットが直ちに作成されて、
    データベース内の物理ストレージに保存され、実行時に、この実行コストがかかる操作に必要なオーバーヘッドをなくすことができます。

    方法は、クエリ オプティマイザによりビューを利用する方法で、クエリ オプティマイザは、最も実行コストの低いクエリ プランで
    、一部または全部のクエリをビューに置き換えることができると判断した場合に
    、クエリに代えてビューを使用します。


    抜粋はこれぐらいにしますが、参考先を読んでいただくとパフォーマンス向上に役立つ理由が
    いろいろと書いてありますので、かなり長いドキュメントですが一読をお勧めします。

    ビューをSQLで使わなくても、オプティマイザが勝手に判断して勝手に使ってくれるのです。

    ただし、適切なビューを設定したらっという条件はあります。
    後は、(自分もまだ参考ページを読み切っていないので触れているかどうかわかりませんが)
    インデックスを活用するので、更新時のオーバーヘッドになりますので
    作りすぎや影響を考慮してください。

    http://techbank.jp/nora/(SQL Serverを中心に情報発信中)
    • 回答としてマーク sk7474 2009年6月10日 9:09
    2009年5月29日 14:32

すべての返信

  • View を検索速度を向上されるために使用するという話を、私は聞いたことが無いです。(知らないだけかも知れませんが。)
    それよりも、何故 応答が遅くなるのかについてもう少し、調査をされたほうが良いような気がします。

    例えば、アプリケーションから実行すると遅いが、クエリアナライザから実行すると早い、 このパラメータを指定すると早いが、このパラメータを指定すると極端に遅いなどですかね。
    • 回答としてマーク sk7474 2009年6月10日 9:09
    2009年5月28日 11:56
  • 自分もViewは、セキュリティ的な利点と実装時の簡易性としか認識していなかったのですが、
    パフォーマンス向上にも効果があるようです。
    ポイントは、ViewとViewにつけるインデックスにあるようです。

    参考:SQL Server 2005 インデックス付きビューによるパフォーマンスの向上
    SQL Server 2000 で、SQL Server のビュー機能が拡張され、システム パフォーマンス上のメリットを提供できるようになりました。
    一意クラスタ化インデックスや非クラスタ化インデックスをビューに作成することで、最も複雑なクエリのデータ アクセス パフォーマンス
    を向上させる
    ことができます。
    SQL Server 2000 と 2005 では、一意クラスタ化インデックスが設定されたビューを、インデックス付きビューと呼びます。

    ビューに一意クラスタ化インデックスが設定されると、ビューの結果セットが直ちに作成されて、
    データベース内の物理ストレージに保存され、実行時に、この実行コストがかかる操作に必要なオーバーヘッドをなくすことができます。

    方法は、クエリ オプティマイザによりビューを利用する方法で、クエリ オプティマイザは、最も実行コストの低いクエリ プランで
    、一部または全部のクエリをビューに置き換えることができると判断した場合に
    、クエリに代えてビューを使用します。


    抜粋はこれぐらいにしますが、参考先を読んでいただくとパフォーマンス向上に役立つ理由が
    いろいろと書いてありますので、かなり長いドキュメントですが一読をお勧めします。

    ビューをSQLで使わなくても、オプティマイザが勝手に判断して勝手に使ってくれるのです。

    ただし、適切なビューを設定したらっという条件はあります。
    後は、(自分もまだ参考ページを読み切っていないので触れているかどうかわかりませんが)
    インデックスを活用するので、更新時のオーバーヘッドになりますので
    作りすぎや影響を考慮してください。

    http://techbank.jp/nora/(SQL Serverを中心に情報発信中)
    • 回答としてマーク sk7474 2009年6月10日 9:09
    2009年5月29日 14:32
  • こんにちは。中川俊輔です。

    NOBTAさん、野良さん、詳しい回答ありがとうございます。

    Takebonさん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?疑問は解決しましたか?
    何かわからないことがありましたら、ぜひまた質問を投稿してみてください。

    また、有用な情報と思われたため、勝手ながらNOBTAさん、野良さんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年6月10日 9:14
  • 返信送れてすみません
    Viewに速度については私の勘違いという事ですね
    なにかの本でみたような気がしていたんですが
    調べても探せなかったので・・・
    インデックス付きビューについても教えてくださって
    ありがとうございました。
    2009年6月12日 0:27
  • インデックス付きViewのことを忘れておりました。
    view による速度の向上は無いのですが、view にクラスタ化インデックスを作成することにより、Viewで得られた結果に対して、インデックスが作成されるので、複雑なクエリのパフォーマンスを向上させることが出来る可能性があります。
    ただし、実行プラン作成時に、オプティマイザが、Viewに作成したインデックスを使用すればという条件付きになります。

    2009年6月12日 1:10