Question

Pour un moment donné, un actif a un prix effectif. Certains actifs ont un nouveau prix une fois par semaine, certains une fois par jour. Le prix le plus récent est le "prix effectif".

La table temporelle qui stocke la relation décrite ressemble à ceci:

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)
)

Les données ressemblent à ceci:

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

Interroger pour le prix effectif d'un AssetId est simple, mais il faut un temps non trivial pour calculer.

Il est idéal pour stocker les données physiquement, de sorte que seule les données changent en dbo.AssetPrice nécessite un recalcul du prix effectif. Je crois que je ne peux pas créer une vue indexée car les fonctions agrégées pertinentes ne sont pas autorisées dans une vue indexée.

Comment régler la table pour récupérer le prix effectif (prix le plus récent) très rapidement?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top