質問
SQL Server 2000で仮想インデックスが使用されていることを知っている人はいますか? 15以上のそのようなインデックスを持つテーブルがありますが、それらが何のために作成されたのかわかりません。削除/挿入を遅くすることはできますか?
解決
仮想インデックスは通常、インデックスチューニングウィザードの実行時に作成され、提案です。通常の状況では、ウィザードが正常に実行されると削除されます。
問題が発生する可能性がある場合は、これらを削除する方法のリンク。
他のヒント
2000年についてはわかりませんが、2005年の仮想インデックスとデータベースオブジェクトは、一般に DTA(データベースチューニングアドバイザー)によって作成されたオブジェクトです
次のクエリを実行することにより、インデックスが仮想であるかどうかを確認できます。
SELECT *
FROM sys.indexes
WHERE is_hypothetical = 1
チューニングアドバイザーにインデックス戦略の基礎となる適切な情報を提供した場合、その結果を一般に信頼すると言いますが、もちろん、盲目的に信頼する前にこれらの割り当て方法を調べる必要があります。状況はすべて異なります。
<!> quot; SQLサーバー仮想インデックス<!> quot;のGoogle検索最初の結果として次の記事を返しました。引用:
仮想インデックスとデータベースオブジェクトは一般に、DTA(データベースチューニングアドバイザー)によって作成された単なるオブジェクトです
仮想インデックスは、データベースチューニングアドバイザーによって生成されたインデックスです。一般的に、あまりにも多くのインデックスを作成するのは良い考えではありません。使用していないインデックスを削除するには、クエリプランを調べる必要があります。
is_hypothetical bit
1 = Index is hypothetical and cannot be used directly as a data access path.
Hypothetical indexes hold column-level statistics.
0 = Index is not hypothetical.
ドキュメント化されていないWITH STATISTICS_ONLY
を使用して手動で作成することもできます:
CREATE TABLE tab(id INT PRIMARY KEY, i INT);
CREATE INDEX MyHypIndex ON tab(i) WITH STATISTICS_ONLY = 0;
/* 0 - withoud statistics -1 - generate statistics */
SELECT name, is_hypothetical
FROM sys.indexes
WHERE object_id = OBJECT_ID('tab');