• 締切済み

Viewを作ると遅くなる?

Viewを作成してそのViewに対してWhere句で条件を付けて検索する場合と、 Viewを作成せずに直接Where句で条件を付けて検索する場合と、どちらが パフォーマンスがよいでしょうか? (1)Viewを使わない例 SELECT 伝票番号,伝票日付,金額 FROM 伝票 WHERE 伝票番号=1 (2)Viewを使う例  あらかじめViewを作成しておく CREATE VIEW TEST_VIEW AS SELECT 伝票番号,伝票日付,金額 FROM 伝票 以下のSQL文を発行する SELECT * FROM TEST_VIEW WHERE 伝票番号=1 このような質問をした訳は、元となるテーブルの全件を対象とした Viewを作った場合、毎回テーブルフルスキャンを行ってViewを作成 したあとにWHERE句の絞り込みを行うのかどうかが気になったから です。

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

インデックスが無ければどちらも大差無いと思います。 実行プランを確認しないと確実な事は言えませんが、例示されているようなVIEWなら元テーブル上で検索してからVIEWデータを作るような実行プランになる可能性が高いと思います。 MS SQL ServerならVIEWにもインデックスを付けられるので、インデックスを適切に張ればVIEWも高速に検索できます。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

2)の方が速いです。 元テーブルのデータはバラバラに入っています。 ので、条件や並び替えを使うと全件を読み込んでデータを引っ張ってきます。 条件にや並び替えにかなったビューを作ればデータの一部だけ読みこむようになり、 速く検索することができます。 ただ、だからといってビューをたくさん作るとデータの更新・削除・登録の時に、 ビューのほうもデータの更新・削除・登録が必要になり、遅くなります。

関連するQ&A