Skip to content
Community Question

How can developers optimize AL loops and record retrieval when processing thousands of Business Central records?

Share knowledge. Learn from experts. Build together.

Question

How do you design AL processing logic to efficiently handle thousands or millions of Business Central records without unnecessary database reads or excessive memory usage? Explore FindSet, SetRange, SetFilter, SetLoadFields, key selection, filtering strategies, and avoiding unnecessary Find/Get operations inside loops. Understand how transaction scope, locking, FlowFields, and database interaction can impact performance. The goal is to build scalable AL code that remains efficient as business data grows.
62 Views Community Discussion

Answers

When processing thousands of records in Business Central, performance depends heavily on how records are retrieved and how much work happens inside the loop.

Use selective filters and FindSet() when processing a set of records. Avoid retrieving unnecessary fields; SetLoadFields() can help reduce data loading when only specific fields are required.

Also watch for the N+1 query problem—for example, retrieving related records separately inside every iteration. Where appropriate, use set-based operations or Query objects instead of repeatedly querying the database.

Be careful with CalcFields(), FlowFields, and database writes inside large loops. Unnecessary Modify() operations can increase locking and transaction overhead.

A practical optimisation approach is:

Filter → Load only required fields → Minimise database calls → Reduce writes → Measure performance.

For large processes, don't optimise based only on assumptions. Use Business Central performance tools and the AL Profiler to identify the actual bottleneck.

Interview tip: Be ready to explain not just how FindSet() works, but why your data-access design scales when processing 10,000+ records.

Your Answer

Connect