In this Stackoverflow article, I understand what Persist
mean and their advantages and disadvantages. However, I tried to research deeper but cannot find about the "update" one.
Here is my scenario (TL;DR version below): I have Order
table and OrderDetail
table, as in this diagram:
The OrderDetail.Subtotal
is a computed column, with this simple fomula: ([Price]*[Quantity])
The Order.Total
is a computed column, with this formula: ([dbo].[CalculateOrderTotal]([ID]))
, and here is the function:
ALTER FUNCTION [dbo].[CalculateOrderTotal]
(
@orderID int
)
RETURNS int
AS
BEGIN
DECLARE @result int;
SELECT @result = SUM(od.Subtotal)
FROM OrderDetail od
WHERE od.OrderID = @orderID;
RETURN @result;
END
TL;DR: My Order
and OrderDetail
are frequently updated, but only mostly INSERTING. I also need to query it usually, though not as frequently as inserting. If I check my Subtotal
and Total
to be Persist
, since most of the operations won't affect the Subtotal
field of a row, does SQL Server know it so that the database only need to update the affected record, or it have to recompute all record of Order
table? Is it good or bad?
P.s: I am using SQL Server 2008 in case it matters.