- ベストアンサー
Viewにインデックスは張れますか?
件名の通りなのですが、作成したViewが遅くて困っています。 改善方法としてはViewを作成しないで従来のSQLにインデックスを張って取得する方法にしようかなと考えています。 なにかいい方法はありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Viewの元テーブルに適切なIndexを貼る、ではいけないのですか?
その他の回答 (2)
- sapporo30
- ベストアンサー率33% (905/2715)
回答No.3
すでに回答が出ていますが、Viewには INDEXは張れません。 ViewでもINDEXを使用したい場合は、 元の表にINDEXを張ります。 従来のSQLとViewのスピードが同じくらい であれば、効果があがると思います。 INDEXが有効に使われない場合は、HINT分なども 効果があります。 ただ、パフォーマンスの道は、奥が深いです。 SQL Traceを取得して、ボトルネックに なっている部分を見つけると、効果的な チューニングが出来ます。
質問者
お礼
そうですね。今では全体のインデックスの見直しが必要になっています。 なかなか有効にインデックスが使用されないのでヒントも多用しています。 実行計画を見ていろいろ試してみます。 ありがとうございました。
- nopo3
- ベストアンサー率40% (8/20)
回答No.2
Viewは所詮、複数のテーブル内の情報を結合表示する一種のエイリアスのようなものですので、実体であるテーブルのネックとなっている項目にインデックスを張ることが最善だと思います。
質問者
お礼
やはりそうですよね。 実体のテーブルの見直しを行います。 ありがとうございました。
補足
元テーブルにIndexを張ればViewも速くなるのですね。 ありがとうございます。確認してみます。