У меня есть две таблицы ...
CREATE TABLE [dbo].[Invoice](
[InvoiceID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[TotalSumBeforeTax] [decimal](12, 2) NOT NULL,
[TotalSumAfterTax] [decimal](12, 2) NOT NULL
)
CREATE TABLE [dbo].[InvoiceItem](
[InvoiceItemID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[InvoiceID] [uniqueidentifier] NOT NULL,
[AmountBeforeTax] [decimal](12, 2) NOT NULL,
[AmountAfterTax] [decimal](12, 2) NOT NULL
)
Таблица счетов содержит рассчитанную сумму всех InvoiceItems
, которые относятся к этому счету.
Мне нужна помощь в выясненииЛучшая практика для правильного сохранения суммы счета-фактуры без потери производительности.
Расчетный столбец?
Если я использую вычисленный столбец для TotalSumBeforeTax
и TotalSumAfterTax
в счете-фактуретаблица, которая извлекает значения через функцию из таблицы InvoiceItem
, она не сохраняется и будет очень медленной, поскольку у меня в таблице InvoiceItem
есть сотни тысяч строк.
Триггер?
Я также думал об использовании триггера для таблицы InvoiceItem
и последующем обновлении столбцов Invioce TotalSumBeforeTax
TotalAfterBeforeTax
.
Что делать?
Есть ли способ всегда поддерживать столбцы TotalSumBeforeTax
и TotalSumAfterTax
в актуальном состоянии с минимальным влиянием на производительность при перечислении многих строк таблицы Invoice?