特定の時点では、資産の有効な価格が設定されています。一部の資産は、週に1回、一部は1日に1回の新しい価格です。最新の価格は「実効価格」です。一時的なSQL Serverテーブルのパフォーマンスを調整する方法
説明の関係を保存する一時表は次のようになります。
CREATE TABLE dbo.AssetPrice
(
AssetId int NOT NULL -- FK to the table dbo.Asset
,EffectiveDate datetime NOT NULL
,Price decimal NOT NULL
CONSTRAINT PK_AssetPrice PRIMARY KEY CLUSTERED (AssetId,EffectiveDate,Price)
)
データは次のようなものになります。AssetId
の効果的な価格を照会するには
AssetId EffectiveDate Price
------- ------------- -----
1 2012-01-11 1.21
1 2012-01-12 1.22
2 2012-01-11 3.55
2 2012-01-12 3.60
3 2012-01-04 5.15
3 2012-01-11 5.14
を簡単ですが、それは計算するのに些細な時間を要します。
dbo.AssetPrice
へのデータ変更のみが実効価格の再計算を必要とするように、物理的にデータを格納することが理想的です。私は、関連する集約関数はインデックス付きビューでは許可されていないため、インデックス付きビューを作成できないと考えています。
有効な価格(直近の価格)をすばやく検索するためにテーブルを調整するにはどうすればよいですか?
価格を計算するために「些細でない時間がかかる」クエリはどちらですか? –
@ypercube 'AssetId'の有効な価格を見つけるためのクエリは、いくつかの計算ではボトルネックでした - それは彼の答えでRubens Fariasによって書かれたサブクエリと同じようにサブクエリが必要でした。 – Mike