NetSuite SuiteQL Pagination Time Calculator
Pulling a few hundred thousand rows out of NetSuite through SuiteQL is a paging problem. Page size, latency and parallelism decide whether the job takes minutes or hours, and this tool shows the trade-off.
Your numbers
The REST SuiteQL endpoint returns up to 1000 rows per page.
Measured round trip including query execution.
Parallel offset ranges. Each thread uses one concurrency slot.
Share of pages that need a repeat call due to errors or timeouts.
Your results
Offset pagination can slow down on deep offsets and the dataset can change between pages. For consistent extracts, filter by a stable key or last modified range instead of relying on offset alone.
Extraction seconds vs rows per page
Sweeps Rows per page from 100 to 1000, holding your other inputs fixed.
NetSuite extract design
Optional: get a short plan for incremental extraction from NetSuite to your warehouse.
Optional. The tool and every export work without this. No spam.
How to use it
Enter the number of rows you expect, the page size you will request and the time one page takes. If you plan to run several offset ranges at once, set the number of threads. The retry percentage adds extra calls for pages that fail and must be repeated. The result shows pages, total calls, extraction time and rows per second, and the chart shows how page size changes the total.
The calculation
Pages equal rows divided by page size, rounded up. Calls equal pages inflated by the retry share. With threads running in parallel, elapsed time is the number of calls per thread multiplied by the time per call. Smaller pages mean more round trips and more fixed overhead, so the larger page size is usually faster until memory or response size becomes a problem. Parallel threads divide time almost linearly but consume concurrency slots shared with other integrations.
- Pages = ceil(rows / page size)
- Calls = pages x (1 + retry share)
- Time = ceil(calls / threads) x time per page
- Throughput = rows / time
Reading the result
If a daily full extract takes more than a few hours, move to incremental loads keyed on last modified date. If it is under an hour, a full extract may still be simplest. Watch the thread count against your account concurrency limit, because eight threads can occupy most of a default allowance and cause errors for every other integration.
Common mistakes
Deep offsets can slow down as the server skips more rows, so do not assume time per page is constant at row 400,000. Use an ORDER BY on a unique key so pages do not overlap or skip rows. Also remember that records can change while you page, so a long extract may miss or duplicate rows without a stable filter.
- Always add a deterministic ORDER BY, such as id
- Prefer incremental extracts with a lastmodifieddate filter
- Keep threads below your concurrency headroom
- Retry with backoff, not immediately
Frequently Asked Questions
What is the maximum SuiteQL page size?
The REST SuiteQL endpoint returns up to 1000 rows per request, and you page using limit and offset. The N/query module has its own paging options. Check current documentation for your integration method.
Is offset paging reliable?
It works for static data. If rows are inserted or modified during the extract, pages can overlap or skip. Use a stable ORDER BY and a modified-date window for production loads.
How many threads should I use?
Use fewer than your free concurrency slots. Two to four threads is a common starting point. Measure latency as you add threads, since it often rises under load.
Should I use saved searches instead?
SuiteQL is generally easier for joins and ad hoc extracts, while saved searches suit existing business logic. Compare speed on your own data because results differ by record type.
Netray can help build a reliable NetSuite to warehouse extract with incremental logic, retries and monitoring.
Related Tools
NetSuite API Concurrency Limit Calculator
Turn request rate and response time into concurrent requests, compare against your account limit, and find the maximum safe call rate.
Developer ToolsNetSuite API Retry Backoff Wait Time Calculator
Plan exponential backoff for NetSuite 429 and concurrency errors: delay per attempt, total wait with and without jitter, and worst case duration.
NetSuiteNetSuite File Cabinet Storage Growth Calculator
Forecast how much File Cabinet space scripts and attachments will consume over a retention period, including annual volume growth.
NetSuiteSuiteScript Scheduled Script Run Count Calculator
Estimate total governance units, records per run, number of reschedules and total runtime for a scheduled script before you write it.
More NetSuite tools
See all- NetSuite Saved Search Formula Generator
- NetSuite CSV Import Template Guide
- NetSuite Role Permission Matrix Worksheet
- NetSuite Inventory Costing Method Reference
- NetSuite Month End Close Checklist
- NetSuite License Cost Estimator
- NetSuite User Access Request Form Template
- NetSuite Custom Record Design Spec Template
- NetSuite SuiteScript Deployment Handover Template
New to NetSuite? Start with the NetSuite guide and toolkit, or plan with NetSuite Cost Calculator, Training Path Builder, ERP Certification Study Planner.
Keep exploring
Free tools
- NetSuite REST API SuiteQL Request GeneratorTurn a SuiteQL statement into a ready POST to the REST query/v1/suiteql endpoint, plus curl and a Python script that pages through every result.
- NetSuite SuiteQL Tables ReferenceThe SuiteQL (NetSuite2.com data source) tables you join most often, each with its key, main columns and the exact join condition.
- NetSuite SuiteQL Transaction Query GeneratorPick a transaction type, date range and row limit and get ready-to-run SuiteQL for headers, lines and the REST call that executes it.
ERP fixes and how-tos
- How to write and run SuiteQL queries in NetSuiteRun SuiteQL from Analytics > SuiteQL Query Tool or via N/query in SuiteScript. Syntax basics, joins, pagination and real examples for NetSuite reporting.
- Working with NetSuite's SuiteTalk REST Web Services APICall NetSuite's SuiteTalk REST record and SuiteQL endpoints correctly: base URLs, pagination with limit/offset/hasMore, expandSubResources, the Prefer: transient header, and common 404 and permission errors.
- N/query versus N/search: choosing the right SuiteScript data access moduleCompare NetSuite's N/query (SuiteQL) and N/search modules for performance, governance cost and capability, and decide which to use for joins, aggregation, sublist reads and large exports in SuiteScript 2.1.
AI on your ERP
- AI agents for NetSuite manufacturing operationsAI agents for NetSuite manufacturing: WIP tracking, routing exceptions, and work order status grounded in SuiteQL, with human approval on anything that writes back.
- AI for NetSuite, Beyond the Built-In Text ToolsNetSuite's built-in AI covers text generation, not grounded answers on your own data. See how a private LLM over SuiteQL adds real Q&A and controls.
Integrations
- How to add AI agents to Oracle NetSuiteHow to add AI agents to Oracle NetSuite: SuiteQL and REST tool layer, RESTlet writes, role-scoped tokens, human approval, and where a private model fits.
- How to use Claude with Oracle NetSuiteUse Claude with Oracle NetSuite through MCP connectors, the Anthropic API, AWS Bedrock or Vertex, plus the on-prem alternative for controlled data.