0

SQL Server 2008 を使用しています。

次のような 2 つのテーブルがあります。

オーダーアイテム

OrderItemID
InventoryItemID

と :

InventoryItems

InventoryItemID
ItemCode

私のクエリ プランは、すべての注文項目InventoryItemIDを取得するために s に参加することに多くの時間を費やしていることを示しています。ItemCode

両方のテーブルの両方の列を含む非クラスター化インデックスを既に持っていますが、さらに高速化したいと考えています。リレーショナルItemCodeOrderItemsテーブルのインデックスに "インポート" できますか?

4

1 に答える 1

1

いいえ、別のテーブルの列を含めることはできません。ただし、「既成概念にとらわれない」提案の 1 つは、OrderItems と InventoryItems を結合する Indexed View を作成することです。最速のパフォーマンスを達成するような方法でビューにクラスター化インデックスを設定できます。結合を行う必要なく、注文と在庫アイテムの両方が同じ「テーブル」にあるように見えます。結果は、データのやや非正規化されたビューになります。

もちろん、インデックス付きビューには多くの制限がありますが、内部結合は許可されています。私はインデックス ビューをかなり頻繁に使用してきましたが、非常に便利です。各操作でビューの更新が必要になるため、ここでは挿入/更新/削除のパフォーマンスに関する考慮事項があります。しかし、それは価値があるかもしれません。

于 2012-07-19T20:20:54.997 に答える