Unstored calculations across relationship chains
ExpertUnderstand how chain depth and unstored fields compound into slow solutions, and how to break calculation chains with stored intermediate fields.
What you'll learn
- How unstored calculation chains multiply re-evaluation costs
- How to identify deep chains with Manage Database
- How to break chains with stored intermediate fields
When a calculation field references a related field, and that related field is itself an unstored calculation, the chain of re-evaluation compounds. A layout showing 20 portal rows, each resolving a three-hop unstored chain, can require hundreds of evaluations per screen paint. Understanding and breaking these chains is critical for performance at scale.
How chains multiply cost
Every unstored field in a chain must be re-evaluated whenever any of its inputs change. A chain A → B → C where all three are unstored means changing A re-evaluates B, then re-evaluates C for every context that uses C.
// Chain: // Invoices::TaxAmount (unstored calc, uses TaxRate) // ← Contacts::TaxRate (unstored calc, uses Region) // ← Regions::TaxMultiplier (unstored calc, uses date) // Displaying TaxAmount for 50 portal rows: // → 50 × TaxAmount evaluations // → 50 × TaxRate evaluations // → 50 × TaxMultiplier evaluations = 150 calculations per refresh
Sign in to track your progress and pick up where you left off.
Sign in to FM Dojo