bcquality/microsoft/knowledge/performance/temporary-tables-have-no-database-cost.good.al
Jesper Schulz-Wedde 87ba36e650
Add BC performance knowledge from OptimAL learnings (#198)
* Add BC performance knowledge from OptimAL learnings

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Address review feedback on performance guidance

Clarify predicate-supporting keys versus covering queries, demonstrate proven cache reuse, and evaluate the updated partial-load and bulk-update rules.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-29 17:21:28 +02:00

39 lines
1.1 KiB
AL

// Caller supplies an unfiltered temporary buffer that does not change during this call.
table 50373 "Perf Cell"
{
DataClassification = CustomerContent;
fields
{
field(1; "Cell No."; Integer) { }
field(2; "Item No."; Code[20]) { }
field(3; Quantity; Decimal) { }
}
keys
{
key(PK; "Cell No.") { Clustered = true; }
}
}
codeunit 50374 "Perf Temp Totals Good"
{
procedure SumDisplayedItemTotals(var TempCells: Record "Perf Cell" temporary) DisplayedTotal: Decimal
var
TotalsByItem: Dictionary of [Code[20], Decimal];
ItemTotal: Decimal;
begin
if TempCells.FindSet() then
repeat
if TotalsByItem.Get(TempCells."Item No.", ItemTotal) then
TotalsByItem.Set(TempCells."Item No.", ItemTotal + TempCells.Quantity)
else
TotalsByItem.Add(TempCells."Item No.", TempCells.Quantity);
until TempCells.Next() = 0;
if TempCells.FindSet() then
repeat
DisplayedTotal += TotalsByItem.Get(TempCells."Item No.");
until TempCells.Next() = 0;
end;
}