• ベストアンサー

Viewにインデックスは張れますか?

件名の通りなのですが、作成したViewが遅くて困っています。 改善方法としてはViewを作成しないで従来のSQLにインデックスを張って取得する方法にしようかなと考えています。 なにかいい方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Viewの元テーブルに適切なIndexを貼る、ではいけないのですか?

toshi_200578
質問者

補足

元テーブルにIndexを張ればViewも速くなるのですね。 ありがとうございます。確認してみます。

その他の回答 (2)

  • sapporo30
  • ベストアンサー率33% (905/2715)
回答No.3

すでに回答が出ていますが、Viewには INDEXは張れません。 ViewでもINDEXを使用したい場合は、 元の表にINDEXを張ります。 従来のSQLとViewのスピードが同じくらい であれば、効果があがると思います。 INDEXが有効に使われない場合は、HINT分なども 効果があります。 ただ、パフォーマンスの道は、奥が深いです。 SQL Traceを取得して、ボトルネックに なっている部分を見つけると、効果的な チューニングが出来ます。

toshi_200578
質問者

お礼

そうですね。今では全体のインデックスの見直しが必要になっています。 なかなか有効にインデックスが使用されないのでヒントも多用しています。 実行計画を見ていろいろ試してみます。 ありがとうございました。

  • nopo3
  • ベストアンサー率40% (8/20)
回答No.2

Viewは所詮、複数のテーブル内の情報を結合表示する一種のエイリアスのようなものですので、実体であるテーブルのネックとなっている項目にインデックスを張ることが最善だと思います。

toshi_200578
質問者

お礼

やはりそうですよね。 実体のテーブルの見直しを行います。 ありがとうございました。

関連するQ&A