Ich habe Probleme, eine Dokumentation darüber zu finden, wie SQL Server eine nicht persistierte berechnete Spalte tatsächlich speichert.
Nehmen Sie das folgende Beispiel:
--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
Ich verstehe, dass es auf Blattebene gespeichert ist, aber wenn der Wert nicht beibehalten wird, wie wird überhaupt etwas gespeichert? Wie hilft der Index SQL Server in dieser Situation, diese Zeilen zu finden?
Jede Hilfe sehr geschätzt,
Danke vielmals,
BEARBEITEN:
Vielen Dank an Brent & Aaron für die Beantwortung dieser Frage. Hier ist der PasteThePlan, der deutlich zeigt, was sie erklärt haben.