Row limits
Last updated August 6, 2026 · By the SaturnSQL team
The 1,000 rows you see in the editor is a display default, not a limit on your data. Exports do not use it. On PostgreSQL and MySQL, a CSV or JSON export has no row limit at all.
Reading results in the editor
A query run in the editor returns 1,000 rows by default. The picker at the bottom of the results changes it to 1,000, 5,000, 10,000, and changing it re-runs the query. When a result stops because it hit the limit rather than because it ran out of rows, the results bar says row limit reached, so you always know whether you are looking at everything.
This limit exists for the browser rather than for your database. A table of a million rows drawn into a web page is slow to the point of unusable, so the editor deliberately keeps a ceiling of 10,000. Exports are where you go past it.
A LIMIT you write yourself always wins. SaturnSQL only adds its own LIMIT when your query has none. Write SELECT ... LIMIT 50000 and you get 50,000 rows, in the editor as well.
Exporting
Export re-runs your query rather than saving what is on screen, so an export is never bounded by the preview. On PostgreSQL and MySQL the rows are streamed straight into the file as they arrive, which means nothing has to hold the whole result and there is no row limit to hit.
| Export | Row limit |
|---|---|
| CSV or JSON, PostgreSQL and MySQLStreamed, so the practical limit is time rather than rows | none |
| Excel, PostgreSQL and MySQLExcel's own maximum rows per sheet | 1,048,576 |
| Google Sheets, PostgreSQL and MySQLGoogle's maximum per spreadsheet, so rows divided by your column count | 10M cells |
| Any format on SQL Server, BigQuery, ClickHouse or DynamoDBThese read the whole result before writing the file, so they keep a ceiling | 100,000 |
| Copy to clipboardAbove this, use CSV or Excel: the clipboard is not built for it | under 10,000 |
Scheduled exports
A scheduled export to Google Sheets delivers up to 100,000 rows. If a run is cut short, its entry under Recent runs is marked capped, alongside the row count and how long it took. That marker matters more than the number: nobody watches a scheduled export, and an incomplete spreadsheet otherwise looks exactly like a complete one.
Slack is limited by message length rather than rows, because a Slack message is a summary. Send a few rows of totals there and use Google Sheets or a file for the full set.
Reports and dashboards
A report page and each dashboard tile show up to 1,000 rows, 100 at a time. For anything larger, open the query in the editor and export it, or have it delivered on a schedule.
Limits that are not row counts
Rows are a poor measure of size, because one row of a few numbers and one row holding a document are wildly different amounts of data. So there is a size limit as well as a row limit, and for wide tables it is usually the size limit you meet first.
| Limit | Value |
|---|---|
| Result size, running a query in the editor | 25 MB |
| Result size, exports and scheduled runsHigher, because nothing has to draw these rows on a screen | 100 MB |
| A single cellLonger values are shortened | 256 KB |
| Time for a query in the editor | 120 seconds |
| Time for an export or scheduled run | 300 seconds |
For a streamed export, time is the real limit. A narrow table can deliver millions of rows inside the budget, while a slow multi-table join might not manage 10,000. If an export runs out of time, narrowing the query is what helps: fewer columns, a tighter date range, or filtering in SQL rather than afterwards.
Getting more rows
- Export instead of reading: CSV and JSON on PostgreSQL and MySQL have no row limit.
- Write your own LIMIT: we never override one you have written, in the editor or anywhere else.
- Raise the picker: at the bottom of the results, up to 10,000 for reading on screen.
- Split by date: a month at a time turns one export that times out into several that do not.
- Aggregate in SQL: if the rows are only going to be summed,
GROUP BYin the query beats exporting a million rows to add them up elsewhere.
If none of that covers what you need, tell us what you are exporting and how often. Some of these numbers exist because of how a browser or a spreadsheet behaves, and some exist because nobody has needed more yet.