Indexed lookups on a table searched on nearly every keystroke return in about a millisecond.
A drayage logistics operator, operations console with a container lookup that is searched on nearly every keystroke.
Replay the measurement
Full table scan against the trigram index
For a long pattern the index answered in 1.19, 1.52 and 1.59 ms across three runs, against 31.4 ms for the full table scan.
Bars are drawn to scale on one linear axis from 0 to 33.8 ms, the same for both patterns. The replay runs 100 times slower than measured, so 1 ms on screen lasts a tenth of a second.
| Value | Method | Recorded | Scope |
|---|---|---|---|
| 31.4 ms | EXPLAIN (ANALYZE, BUFFERS) with index and bitmap scans turned off, so Postgres read the whole table: pattern ILIKE '%7152%', LIMIT 20 | 2026-09-30 | The whole container lookup table |
| 1.19 / 1.52 / 1.59 ms | Same query shape against the trigram index across three consecutive runs | 2026-09-30 | The whole container lookup table |
Dates are when each figure was recorded for this site; the work itself is dated in the setting above.
What this does not prove
A sequential scan legitimately wins for very short prefixes: a two-character search under a limit of 20 rows measured 0.4 ms scanning the table against 33.8 ms through the index. The index helps the long patterns a person actually types, and it is not a blanket speedup.