Usiłuję znaleźć jakąkolwiek dokumentację dotyczącą tego, jak SQL Server faktycznie przechowuje nietrwałą kolumnę obliczeniową.
Weź następujący przykład:
--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
Rozumiem, że jest przechowywany na poziomie liścia, ale jeśli wartość nie zostanie utrwalona, w jaki sposób w ogóle coś jest przechowywane? W jaki sposób indeks pomaga SQL Serverowi znaleźć te wiersze w tej sytuacji?
Każda pomoc bardzo doceniana,
Wielkie dzięki,
EDYTOWAĆ:
Dzięki Brentowi i Aaronowi za odpowiedź na to pytanie , oto PasteThePlan wyraźnie pokazujący, co wyjaśnili.