zanith

studio / sql · 01 — Playground

A SQL surface that holds your work.

Tabs persist across reloads. Plans persist with them. Watch mode keeps a query alive. Result charts render inline when the data is shaped right. The CLI's power without switching windows.

users · last loginrev by day+ new tab1234567SELECT id, email, last_loginFROM usersWHERE last_login > :sinceORDER BY last_login DESCLIMIT 100;▶ RunEXPLAIN◷ Watch📈 Plans · 3Clear128 rows · 412msTable📊 ChartIDEMAILLAST_LOGINa4c8…[email protected]2 hours agob1f2…[email protected]5 hours agoc702…[email protected]yesterdayd955…[email protected]2 days agoe8a2…[email protected]2 days ago
multi-tab · persisted:name paramsplan historywatch moderesult chartsv0.2 · shipped

02 — The editor

Four small things that compound.

Multi-tab

Open as many SQL tabs as you need. Each tab keeps its own SQL, history, plans, and result.

:name parameters

Write `WHERE created_at > :since` and Studio prompts you for the value. The CLI does the same.

History per tab

Last 50 statements, scoped to each tab. Up-arrow scrolls through them.

Saved queries

Workspace-scoped or per-connection. ⭐ a query and pin it to the sidebar.

03 — Plans + watch

EXPLAIN that remembers.

EXPLAIN ANALYZE auto-applies for read-only queries. Plans stack up as you iterate. Compare runs side by side. Or hit Watch and let the query auto-rerun every N seconds.

Plan history

per tab

Up to 20 EXPLAIN runs per tab. Click any prior run to re-render its plan in the results pane.

  • prev412ms · 12s
    Seq Scan on users · cost 14,872
  • current8ms · now
    Index Scan on users_email_idx · cost 18
↓ 50× faster after adding the index

Watch query

◷ every 5s

Set an interval. The query reruns silently. Use it to watch row counts, queue depth, or a deploy-in-progress.

04 — Charts in place

Toggle the result into a chart.

Group-by, aggregate, render. Bar or line. The toggle is in the result pane, not in a separate window. Saves the cycle of "run, copy, paste in another tool, render".

result · 30 days · grouped by day
Table📊 Chart
x · group by
created_day
y · agg
SUM(amount_cents)
kind
bar