Three computed column types exist in Dataverse and they are not interchangeable. Pick wrong and you get either stale numbers, slow forms, or both.
Calculated columns: lazy and read-time
Calculated columns evaluate their formula every time the row is read. The value is never stored. That sounds cheap until you put one in a view returning 5,000 rows: that is 5,000 evaluations per page load. They support cross-table reads via Customer.Account.Industry-style references, but the read happens at view load.
Use for: simple expressions evaluated infrequently, not for view columns or chart axes.
Rollup columns: scheduled and approximate
Rollup columns aggregate child records (SUM, COUNT, AVG, MIN, MAX) and store the result. Recalculation runs on a 12-hour schedule by default. There is a manual recalc button and an on-demand recalc API, but there is no event-triggered recalc. Your “Total opportunity revenue” field is up to 12 hours stale.
Power Apps -> Tables -> Account -> Columns -> totalopportunityrevenue
-> Edit -> Trigger recalculation: System Job (every 12 hours)
Use for: dashboard aggregates where 12-hour staleness is acceptable.
Formula columns: stored and instant
Formula columns use Power Fx, evaluate at write time, and store the result. They can do everything calculated columns can plus most of what rollup columns can, except aggregations across child rows. For 80% of computed-value use cases in 2026, formula columns are the right answer.
Price = Quantity * UnitPrice
TaxAmount = Price * 0.08
DiscountedTotal = If(IsCustomer, Price * 0.9, Price)
Use for: derived values from same-row or single-related-row data, anything you want indexable and reportable.
The indexability question
Calculated columns cannot be indexed because their value does not exist on disk. That alone disqualifies them from being filter or sort columns on large tables. Formula columns are stored and can be indexed via the addAdditionalIndexes API. Rollup columns are stored too but their values lag, so indexing them is fine for sorting but a trap for filtering.
Migration path
If you have inherited a system with calculated columns in views, every one is a performance fix waiting to happen. Replace with formula columns where the formula does not depend on child aggregates. Replace with rollup or a Power Automate-maintained field where it does.
What to do this week
Audit your account and contact tables for calculated columns appearing in any saved view. Convert each to a formula column. Page load times on those views typically drop 40-60%.