SQL Sequential Scan

Read every row, check each one against the filter — simple, and often the right choice.

What & Why

A sequential scan (Seq Scan) reads a table from start to finish, checking every row against the query's conditions. No index is consulted — this is the fallback every table always supports.

See How It Works

BUSINESS QUESTION

Growth reviews all active users, a broad population that may reasonably use a sequential scan.

idcreated_atcountrychannelplanactivated_atchurned_at
1012024-01-15 09:10:00+00USorganicpro2024-01-16 14:25:00+00NULL
1022024-02-10 11:05:00+00CApaidfreeNULL2024-03-20 10:00:00+00
1032024-03-12 16:35:00+00GBreferralpro2024-03-13 08:15:00+00NULL
1042024-04-01 13:20:00+00USorganicfree2024-04-03 12:00:00+00NULL
EXAMPLE QUERY
SELECT
  id,
  channel,
  plan,
  created_at
FROM growth.users
WHERE churned_at IS NULL
ORDER BY id;
RESULT — active user rows
idchannelplancreated_at
101organicpro2024-01-15 09:10:00+00
103referralpro2024-03-12 16:35:00+00
104organicfree2024-04-01 13:20:00+00

The SELECT result is deterministic; whether PostgreSQL chooses a sequential scan depends on live table statistics.

This lesson's practice is part of Pro.

Advanced business practice

Sign up free to try it on a real business scenario