Domanda

Per un determinato momento, un'attività ha un prezzo efficace. Alcune risorse hanno un nuovo prezzo una volta alla settimana, altri una volta al giorno. Il prezzo più recente è il "prezzo effettivo".

La tabella temporale che memorizza la relazione descritta sembra così:

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

I dati assomigliano a questo:

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

Per interrogare per il prezzo effettivo di un AssetId è semplice, ma ci vuole un tempo non banale per calcolare.

È ideale per archiviare i dati fisicamente, in modo che solo i dati cambino dbo.AssetPrice richiede una ricalcolo del prezzo effettivo. Credo di non poter creare una vista indicizzata perché le funzioni aggregate pertinenti non sono consentite in una vista indicizzata.

Come faccio a sintonizzare il tavolo per recuperare il prezzo effettivo (prezzo più recente) molto rapidamente?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top