Pregunta

Para un punto dado en el tiempo, un activo tiene un precio efectivo. Algunos activos tienen un nuevo precio una vez por semana, algunos una vez al día. El precio más reciente es el "precio efectivo".

La tabla temporal que almacena la relación descrita se ve así:

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

Los datos se parecen a esto:

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

Consultar el precio efectivo de un AssetId es simple, pero lleva una cantidad de tiempo no trivial calcularse.

Es ideal almacenar los datos físicamente, de modo que solo los datos cambian a dbo.AssetPrice requiere un recalculación del precio efectivo. Creo que no puedo crear una vista indexada porque las funciones agregadas pertinentes no están permitidas en una vista indexada.

¿Cómo sintonizo la mesa para recuperar el precio efectivo (precio más reciente) muy rápidamente?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top