SQL Server 2005 新機能 インデックス付きビュー
[参考資料]
SQL Server 2005 インデックス付きビューによるパフォーマンスの向上
http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/ipsql05iv.mspx
次のSQLServerではインデックス付きビューという機能が追加になる。
どういった機能かというと、読んだままだがテーブルに対するサブセットたるビューに対して、インデックスを張ることにより、読み取りが高速にすることが出来る。機能だ。
詳しくは上記資料を読んでほしいが、気になった点を数個所。(ただしこの気になった点は人によって違うだろう).
1. With Schemabindingを指定してビューを作成する必要がある。
テーブルに対して通常より強固に結びつくため、テーブルのカラム変更などでビューの再作成を伴う、またその際にインデックスも再構成されてしまう。
2.ビューの最初のインデックスはクラスタ、ユニークでなければいけない
クラスタでなく、ユニークなインデックスを作成するためには最低2個のインデックスが必要になるわけです。
もともとのテーブルとあわせると3つ
これらは見えにくいINSERTコストにかかってくるので、要注意
3.浮動小数や、非決定論的値はインデックスに出来ない。
ま、当然ですが、CLR UDTなんかで使いたいときには要注意
文書にも書いてありますが、複数のテーブルから構成されるビューのインデックスは、配下(親?)のいづれかのテーブルが更新されたとしてもインデックスの更新が走るので、これらのコストを無視してはいけない。
けど、INSERTコストをきっちりと調べる方法が無いのも問題。