Cómo sintonizar el rendimiento de una tabla temporal de SQL Server
-
30-10-2019 - |
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