Tôi đang vật lộn để tìm bất kỳ tài liệu nào về cách SQL Server thực sự lưu trữ một cột được tính toán không tồn tại.
Lấy ví dụ sau:
--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
Tôi nhận được rằng nó được lưu trữ ở cấp độ lá, nhưng nếu giá trị không được duy trì thì làm sao mọi thứ được lưu trữ? Làm thế nào để chỉ mục giúp SQL Server tìm thấy các hàng này trong tình huống này?
Bất kỳ trợ giúp đánh giá rất cao,
Cảm ơn nhiều,
BIÊN TẬP:
Cảm ơn Brent & Aaron đã trả lời điều này, đây là PasteThePlan cho thấy rõ những gì họ đã giải thích.