0

何百万ものレコードを含む 2 つのテーブル (SQL 2008 を使用して保存) のビューがあります。

CREATE VIEW VwSalesAge
AS
    SELECT
        Transactions.ID
        ,Transactions.Amount
        ,Customer.ID
                ,Customer.Name
        ,Customer.Age
    FROM Transactions 
        INNER JOIN Customer 
            ON Transactions.CustomerID=Customer.ID

今、物理テーブルを使用してこの情報を保存し、次のようなさらに小さなクエリで大きなテーブルをスキャンしないようにします

SELECT * 
FROM VsSalesAge 
WHERE Customer.ID = 123

したがって、パフォーマンスの点でどちらが最良のアプローチですか。

  1. 両方のテーブルで変更データ キャプチャを使用し、変更を特定して新しいテーブル 'TbSalesAge' に適用します。
  2. 物理テーブルの代わりにマテリアライズド ビューを使用する
  3. 他の方法(説明してください...)

PS: リアルタイム レプリカは必要ありません

4

1 に答える 1

0

私見、最善のアプローチはインデックス付きビューを使用することだと思います。SCHEMABINDING オプションを使用してビューを作成する必要があり、計算列、グループ化関数などにいくつかの制限がありますが、これにより、探しているインデックス作成でパフォーマンスが向上した単一の統合オブジェクトが得られると思います。

于 2010-02-15T21:40:59.673 に答える