UNPKG

bc-code-intelligence-mcp

Version:

BC Code Intelligence MCP Server - Complete Specialist Bundle with AI-driven expert consultation, seamless handoffs, and context-preserving workflows

70 lines (49 loc) 3.51 kB
--- title: "SetLoadFields Partial Loading Performance Impact" domain: "dean-debug" difficulty: "intermediate" bc_versions: "14+" tags: ["performance", "memory-optimization", "data-loading", "setloadfields"] samples: "samples/setloadfields-performance.md" --- # SetLoadFields Partial Loading Performance Impact ## Overview SetLoadFields enables partial record loading in Business Central, fundamentally changing data retrieval from traditional full-record loading to selective field loading. This optimization reduces memory overhead and database I/O by loading only specified fields rather than entire record structures. **Key Impact**: Performance gains scale with field count differential - loading 3 fields from a 50-field table shows dramatic improvement, while loading 45 fields shows minimal benefit. ## Strategic Framework ### High-Impact Scenarios - **Large field count tables** (20+ fields) where only 2-3 fields needed - **Blob field tables** (images, documents) when blob data won't be accessed - **Batch processing operations** handling large datasets - **Cloud environments** where bandwidth optimization is critical ### Low-Impact Scenarios - Small tables with few fields - Operations requiring most table fields - Single-record lookups with minimal field requirements ### Decision Threshold Apply SetLoadFields when loading less than 30% of available table fields for meaningful performance gains. ## Architecture Focus ### Memory Optimization Pattern SetLoadFields restricts AL's data retrieval to specified fields only, reducing the in-memory footprint proportional to field count reduction. This is particularly effective with tables containing blob fields or wide data structures. ### Query Performance Impact Database queries become more efficient through reduced data transfer and faster result set processing. The optimization compounds in batch operations where multiple records are processed. ### Critical Constraint Once a record is loaded with SetLoadFields, accessing non-loaded fields triggers automatic reloading of the entire record, potentially negating performance benefits if field access patterns aren't carefully planned. ## Best Practices ### Implementation Strategy - **Analyze field usage patterns** before applying SetLoadFields - **Group related field access** to minimize reload triggers - **Apply consistently** in batch processing scenarios - **Monitor performance impact** to validate optimization effectiveness ### Field Selection Approach Include all fields that will be accessed during the operation lifecycle to prevent expensive record reloads. Consider both direct field access and indirect access through related functions. ### Batch Operation Optimization SetLoadFields provides compound benefits in loops and bulk operations where the memory and I/O savings multiply across record count. ## Anti-Patterns ### Incomplete Field Loading Loading a subset of fields only to access additional fields later in the process, triggering expensive full record reloads that eliminate performance gains. ### Overuse in Small Tables Applying SetLoadFields to tables with few fields where the optimization overhead exceeds the potential benefits. ### Ignoring Access Patterns Implementing SetLoadFields without analyzing actual field usage patterns, leading to frequent reloads and degraded performance. *Performance measurement samples: see samples/setloadfields-performance.md*