Faccio fatica a trovare tutta la documentazione su come SQL Server memorizza effettivamente una colonna calcolata non persistente.
Prendi il seguente esempio:
--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
Capisco che sia memorizzato a livello foglia, ma se il valore non è persistente come viene archiviato qualcosa? In che modo l'indice aiuta SQL Server a trovare queste righe in questa situazione?
Qualsiasi aiuto molto apprezzato,
Grazie molto,
MODIFICARE:
Grazie a Brent e Aaron per aver risposto, ecco il PasteThePlan che mostra chiaramente ciò che hanno spiegato.