J'ai du mal à trouver une documentation sur la façon dont SQL Server stocke réellement une colonne calculée non persistante.
Prenons l'exemple suivant:
--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
J'obtiens qu'il est stocké au niveau de la feuille, mais si la valeur n'est pas persistante, comment est-ce que quoi que ce soit est stocké? Comment l'index aide-t-il SQL Server à trouver ces lignes dans cette situation?
Toute aide grandement appréciée,
Merci beaucoup,
ÉDITER:
Merci à Brent & Aaron d'avoir répondu à cette question, voici le PasteThePlan montrant clairement ce qu'ils ont expliqué.