レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

SQLServer2005 のインデックス付きビューが微妙

SQLServer2005では、ビューのパフォーマンス改善のためにインデックス付きビューが作成できるようになった。
鳴り物入りで導入されたインデックスビューで、Oracleのマテリアライズドビューにも対抗できるかと思いきや、制約が厳しすぎて微妙だ。

たとえば、集計関数の一部(たとえばMax)を使ったクエリが含まれるビューは以下のようなエラーが出る。

ビュー "ZZZ" に インデックス を作成できません。ビューでは集計 "MAX" が使用されています。
集計を削除するか、ビューにインデックスを設定しないか、別の集計を使用することを検討してください。
たとえば、AVG の場合は SUM と COUNT_BIG に置き換え、COUNT の場合は COUNT_BIG に置き換えます。

サブクエリもだめ。

これでは、パフォーマンス上のボトルネックになるクエリの多くは、このインデックス付きビューでは扱えない。

あんまりだなぁ。。