> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lancedb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Incremental Refresh

> Why refreshing a computed column only recomputes fragments that hold a row whose inputs actually changed.

**Applies to:** Embedded ❌, Enterprise ✅

Refreshing a [computed column](https://docs.lancedb.com/feature-engineering/add-computed-column.md)
is incremental: it fills rows that have no value yet and recomputes the
fragments that hold a row whose input changed since it was last computed,
leaving every other fragment alone. A second refresh with nothing changed
does nothing. The
planner finds the rows that actually need work by checking which
fragments still carry stale or empty values for the column, then groups
them into claimable units a fleet of job workers can pick up in parallel
\-- see [Architecture](https://docs.lancedb.com/index.md#architecture).

> [!NOTE]
>
> A **materialized view** doesn't track stale rows the way a computed
> column does -- there's no smaller unit than the whole view to recompute
> from a saved query. In LanceDB Embedded, every refresh rebuilds the view
> completely with no incremental step; LanceDB Enterprise's server chooses
> the refresh mode instead, unless the caller forces a full rebuild. See
> [Refresh a materialized view](https://docs.lancedb.com/feature-engineering/refresh-materialized-view.md).

## Why this matters

Appending rows is cheap: the next refresh only fills what's new, not what
it already computed. Updating an input row is also cheap in the same
way -- the derived column keeps its old value until the next refresh
notices the input changed. Staleness is tracked per fragment, not per
row: the refresh recomputes every row in a fragment where at least one
input moved, which can re-evaluate rows whose own value didn't actually
need it, not strictly only the row that changed. Nothing is recomputed
between refreshes, so a derived column can be stale right up until you
call for one.

## What to read next

> [card] [Refresh a computed column](https://docs.lancedb.com/feature-engineering/refresh-column.md#idempotent)
>
> The exact fill/recompute/leave-alone rules, with examples.

> [card] [Adaptive Execution](https://docs.lancedb.com/enterprise/adaptive-execution.md)
>
> How the units this planner produces get sized and run.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.