SQL Server 2005 の Express エディションには、最適な実行計画を推定する際にマテリアライズド ビュー (スキーマ バインド付き) が自動的に含まれないことを知っています。ただし、ビューが直接クエリされると、実際の実行計画に表示されるアンダーリング テーブルが表示されます。クエリで使用される具体化されたビューでクラスター化インデックスが作成されないのはなぜですか?
ビューのコードは次のとおりです。
CREATE VIEW [dbo].[athObjectNames] WITH SCHEMABINDING
AS
SELECT convert(nvarchar(440),oTextValue) as oTextValue, oObjectID, oTypeID, oVersion
FROM dbo.athObjects
WHERE (oTypeID < 100)
そして、一意のクラスター化インデックスが oTextValue 列に作成されます。
ただし、次のようなクエリを実行すると:
select * from dbo.athObjectNames
where oTextValue = 'Alibabki'
...基になるテーブル (dbo.athObjects) が条件付きの実行プラン (oTypeID < 100) で使用されていることがわかります。athObjects テーブルの oTextValue 列にはインデックスがありません。条件を「< 'Alibabki'」に変更しても、インデックスは役に立ちません。
助けてくれてありがとう。