追加コスト 0 で行う SQL Server のパフォーマンス改善・ボトルネック解消 その3補足 | 野良エンジニアの足跡

追加コスト 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 はライセンス料は高いですが、インデックス付きビューのようなプログラムを改変できないアプリケーションに対してパフォーマンス向上の手段があるという点で非常に強力です。