追加コスト 0 で行う SQL Server のパフォーマンス改善・ボトルネック解消 その3補足
こんにちは、nagino です。
前回紹介したインデックス付きビューですが、Edition による差異が場合によってはクリティカルなため、補足します。
インデックス付きビューを作成した場合、Enterprise Edition と Developer Edition のオプティマイザでは、クエリでそのインデックス付きビューを指定していなくても使用するとコストが下がると判断した場合、インデックス付きビューが使用されます。
Standard Edition など他の Edition ではクエリでインデックス付きビューを明示的に指定し、NOEXPAND ヒントを使用している必要があります。(NOEXPAND ヒントは必須ではないかも・・・)
このため、開発環境は Developer Edition、本番環境は Standard Edition といった状況では、開発時は問題ないのに本番ではパフォーマンスが劣化するという状況に陥ります。
http://technet.microsoft.com/ja-jp/library/cc917715.aspx
http://msdn.microsoft.com/ja-jp/library/ms181151.aspx
Enterprise Edition はライセンス料は高いですが、インデックス付きビューのようなプログラムを改変できないアプリケーションに対してパフォーマンス向上の手段があるという点で非常に強力です。