PartiQL & SQL

You paste SQL habits into PartiQL, run SELECT * FROM orders WHERE status = 'OPEN', and DynamoDB maps it to a table Scan that bills every item. PartiQL borrows SQL syntax; it does not borrow a relational planner.

PartiQL supports SELECT, INSERT, UPDATE, and DELETE against one table at a time on the server. There is no JOIN, no GROUP BY, no cross-item SUM. DynoTable's SQL Workbench fills that gap client-side: it fetches bounded result sets through normal Query/Scan APIs and runs relational operators on your machine, within DynamoDB's access-pattern rules.

What you can do after

  • Predict whether a PartiQL statement becomes a Query or a full-table Scan.
  • Write PartiQL DML knowing it executes directly against the table (not staged by default).
  • Run JOIN, GROUP BY, and aggregates in the Workbench when PartiQL cannot.
  • Explain to teammates why "SQL on DynamoDB" always means bounded, pattern-shaped reads.

Reading order

  1. PartiQL vs SQL — syntax overlap vs engine limits; calibrate expectations before you write queries.
  2. PartiQL examplesSELECT/INSERT/UPDATE/DELETE patterns that map cleanly to DynamoDB APIs.
  3. SQL for DynamoDB — when client-side SQL helps and how DynoTable positions the Workbench.
  4. JOIN — adjacency in keys vs client-side joins over fetched rows.
  5. GROUP BY — aggregate in application code or Workbench after a selective read.
  6. COUNT, SUM, aggregates — why COUNT(*) on PartiQL is still a Scan unless keys narrow the read.
0 of 7 readQuiz

SELECT count(*) FROM events without a key condition reads the whole table and charges read capacity for every item evaluated, even though the response is one number. A Workbench JOIN between orders and customers only joins rows you already paid to fetch — widen the underlying Query and the join cost grows with item size and row count.

PartiQL parameter binding and partiql-supported functions mirror DynamoDB limits: no subqueries, no cross-table references in one statement, no server-side aggregation across partitions. That is why the Workbench exists — SQL familiarity without pretending the server gained a planner. Position every Workbench query as "SQL within DynamoDB's access-pattern rules": bounded reads first, relational operators second.

Try it in DynoTable

Download DynoTable. The SQL Workbench editor is available on free read-only plans with autocomplete powered by a local inferred schema. Paid plans unlock running Workbench queries and exports.

PartiQL SELECT is free to run; PartiQL DML (INSERT, UPDATE, DELETE) executes directly with a warning — it bypasses write staging. Use staging in the item editor when you want a reviewable diff before commit.

The query cost status bar on Workbench and PartiQL tabs shows ~N items · ~R RCU when the plan is known, so a PartiQL statement that degenerates to Scan is visible before you run it. On a 500k-item table, a keyless PartiQL SELECT that becomes a Scan can burn on the order of 125k RRUs for an eventually consistent full read of ~2 KB items — versus a handful of RRUs for a keyed Query. Size that tradeoff in the pricing calculator before you paste production PartiQL into a job. Read the SQL Workbench docs for JOIN and aggregate limits, and use the query builder when you want the same access pattern without hand-writing API JSON.