Me cuesta encontrar documentación sobre cómo SQL Server realmente almacena una columna calculada no persistente.
Tome el siguiente ejemplo:
--SCHEMA
CREATE TABLE dbo.Invoice
(
InvoiceID INT IDENTITY(1, 1) PRIMARY KEY,
CustomerID INT FOREIGN KEY REFERENCES dbo.Customer(CustomerID),
InvoiceStatus NVARCHAR(50) NOT NULL,
InvoiceStatusID AS CASE InvoiceStatus
WHEN 'Sent' THEN 1
WHEN 'Complete' THEN 2
WHEN 'Received' THEN 3
END
)
GO
--INDEX
CREATE NONCLUSTERED INDEX IX_Invoice ON Invoice
(
CustomerID ASC
)
INCLUDE
(
InvoiceStatusID
)
GO
Entiendo que se almacena a nivel de hoja, pero si el valor no se conserva, ¿cómo se almacena algo? ¿Cómo ayuda el índice a SQL Server a encontrar estas filas en esta situación?
Cualquier ayuda muy apreciada,
Muchas gracias,
EDITAR:
Gracias a Brent y Aaron por responder esto, aquí está el PasteThePlan que muestra claramente lo que explicaron.