Databases / FIELD GUIDE

Browse large database tables without letting JSON, XML and HTML take over

Keep database exploration readable with narrow queries, stable ordering, bounded previews and a separate view for large values.

A compact data grid connected to a separate expanded document panel
Concept illustration · All in Term. Not a screenshot or a measurement.

A database grid can become difficult to use even when it contains only a few rows. One cell may hold a complete HTML document, a large JSON response or an XML payload with thousands of characters. If every value expands into the table, the layout becomes unstable and the browser spends effort rendering content that the user has not asked to inspect. The solution involves both the query and the interface. This guide explains a practical way to explore large tables, keep the result set bounded and inspect rich values deliberately. The sample data and chart are illustrative rather than measured application benchmarks.

Decide whether you need rows or a document

A grid is useful for comparing records across a small set of fields. A document viewer is useful for understanding a single large value. Trying to combine both experiences in every cell creates a conflict: the table needs predictable dimensions, while the document needs enough space to be read. Start by deciding which question you are answering. Finding a failed job may require its identifier, status and time, while understanding its failure payload requires a separate focused inspection.

In All in Term's database workspace, begin with the schema and table structure, then browse a manageable set of rows. Treat a truncated preview as a signal that more content exists, not as proof that the stored value ends there. Open the large value when the investigation reaches that record. This approach keeps the comparison view useful and avoids turning every neighboring row into a full document editor.

THE BIG PICTURE

From a table to the one value you need.

  1. 01

    Schema

    Understand fields and relationships.

  2. 02

    Small result

    Select useful columns and stable ordering.

  3. 03

    Row preview

    Compare bounded summaries.

  4. 04

    Value detail

    Inspect one complete document.

Conceptual workflow · follow each check before moving to the next step.

Ask for a small set of useful columns

A broad selection is convenient during an initial experiment, but it can retrieve large values unrelated to the question. If you are looking for recent failed jobs, start with identifiers, status and creation time. Add the payload only after finding the relevant record. Reducing selected columns can decrease the data sent to the client and make the output easier to understand. The actual execution cost still depends on the database, storage and query plan.

Use explicit column names in reusable queries so that a later schema change does not silently alter the shape of your investigation. Describe the purpose of the query in a saved note or snippet. A colleague should be able to see why each field appears. The goal is not to ban broad exploration; it is to make the normal path narrow enough that a surprising document column does not dominate the result before you have identified a useful row.

Choose the view that matches the investigation
TaskStart withInspect separately
Find a failed jobID, status, creation timeError payload
Review imported contentID, source, import statusXML document
Investigate a webhookID, response code, timestampJSON body
Check page recordsID, slug, published statusHTML source
A compact data grid connected to a separate expanded document panel
VISUAL FIELD NOTE / ORIGINAL ILLUSTRATION

Keep the overview compact and the detail available.

The aligned grid represents bounded cell previews. The separate panel represents deliberate inspection of a complete large value, such as JSON, XML or HTML source.

Browse summaries

Use stable row dimensions to compare identifiers, status and time without rendering every document inline.

Inspect one value

Open the relevant payload after locating the record. Truncation in the grid should clearly indicate that more content exists.

AI-generated concept illustration · not a screenshot, literal protocol diagram or measurement.

Make pagination predictable

When browsing multiple result pages, use a deterministic order that includes a unique tie-breaker. Otherwise, the idea of the next page can be ambiguous, particularly when records share the same timestamp. A stable order makes it easier to compare findings and return to the record you saw earlier. Be aware that a changing production dataset can still change between requests, so pagination is not a substitute for a consistent snapshot when the task requires one.

A simple LIMIT is useful for bounding returned rows, but it is not a universal performance guarantee. Queries can still sort, join or inspect substantial data before producing that small result. Review the plan when a bounded query remains slow. For repeated deep navigation, consider whether the application's query design should use a cursor based on an indexed ordering key rather than repeatedly skipping a growing number of rows. Choose the design around the actual access pattern.

Concept illustration of relational database storage and separate data layers
A CLOSER LOOK

Let the grid stay a grid.

Use predictable row dimensions for comparison, then open large JSON, XML or HTML values in a separate inspection view.

Concept illustration, not an application screenshot.

Separate a preview limit from a query limit

A preview limit changes how much of a value the interface displays. A query limit changes how many rows the database returns. These limits solve different problems. If the server returns a large document and the interface shows only a small preview, the layout improves but the transfer may still be large. If the query returns only a few rows containing huge documents, the row count remains small while the client still receives substantial content.

The fictional chart below compares payload sizes for different exploration shapes. The numbers are made up to show the distinction, not to promise an optimization result. Measure the bytes and timings in your environment before making a performance claim. A useful workflow considers row count, selected columns, network transfer and rendering together. Improving one stage can expose a bottleneck in another, which is why the observation should cover the entire path from query to usable screen.

ILLUSTRATIVE DATA · NOT A BENCHMARK

Illustrative payload sizes for different query shapes

Unit: MiB transferred. Synthetic example values, not production measurements.

All columns
24
Summary fields
1
One payload
3

Bars start at zero and share the same linear scale. Exact values are printed alongside each bar.

Inspect structured content as content

Once you select a record, open its large value in a view that can preserve whitespace and show the complete content intentionally. JSON benefits from indentation, XML from visible structure and HTML from being treated as source during database inspection. Do not execute arbitrary stored HTML just to make a preview look attractive. A database value may contain untrusted content, and a data inspection interface should preserve that boundary.

Copy or export the value only when you need it outside the workspace, and consider whether it contains personal information, credentials or internal identifiers. A screenshot of a result grid can expose more than the few fields discussed in a support conversation. For an example or bug report, create a small redacted reproduction. Preserve enough structure to explain the layout problem without sharing the original production document unnecessarily.

Use plans to investigate a slow query

When a query remains slow, separate the database's work from the client's display work. A plan can help explain why the database scans, joins or sorts a particular way. Ask whether the filtering and ordering match the available indexes, whether estimates fit the data and whether the requested result is larger than needed. Avoid assuming that adding an index is automatically the answer; indexes also have storage and maintenance costs.

Plain EXPLAIN describes the chosen plan without executing the query. EXPLAIN ANALYZE executes it to collect actual measurements, so use care with expensive statements and any statement that changes data. Follow the database team's process when testing against production. Compare the same query and relevant conditions before and after a change. A faster grid may result from a narrower result, a different query plan or less rendering; record which part actually improved.

Database records passing through column and row selection gates toward a compact result tray
VISUAL FIELD NOTE / ORIGINAL ILLUSTRATION

Reduce the result before it reaches the screen.

The gates illustrate selecting useful columns and bounding returned rows. They are a conceptual query model, not a literal database execution plan.

Query boundary

Selecting fewer fields and rows can reduce the response payload. Actual database work still depends on the query plan.

Display boundary

A short client preview improves readability but may leave the transferred payload unchanged. Measure these stages separately.

AI-generated concept illustration · not a screenshot, literal protocol diagram or measurement.

Create a reusable exploration sequence

A practical sequence starts with the table structure, continues with a narrow ordered result and ends with focused inspection of one value. Keep exports bounded and name them clearly. If you discover that a frequently used table contains very large documents, document the preferred summary columns so that the next person does not repeat the same heavy first query. This creates a useful convention without requiring everyone to memorize the entire schema.

The best database browsing experience keeps information available without displaying all of it at once. All in Term combines schema exploration, paged data and large-value inspection within the server workflow. Use those capabilities to move from a broad question to a specific record, while retaining the meaning of truncation and pagination. Readability and performance improve together when the interface displays the evidence you currently need and provides a clear path to the rest.

Inside the application: a scoped local example

This capture uses the shipped UI component in an isolated renderer. The host, files and service data are demonstrations, not a production session. It illustrates the surrounding workflow; it does not verify every service-specific command in this guide.

Database component with synthetic PostgreSQL-shaped rows; no database server was contacted.
Actual application component · local demonstration · sample data
Database component with synthetic PostgreSQL-shaped rows; no database server was contacted. Captured 2026-11-08. Open the image to inspect details.

Check bounded previews and read-query validation

Executed the current query builder, preview limiter and SQL validator against a synthetic jobs schema. No PostgreSQL server was queried.

Executed check

buildTablePreviewQuery("jobs", schema, "postgres", 50, 0)
isReadOnlySqlQuery(SELECT example)
isReadOnlySqlQuery(DELETE example)

Recorded output

Generated query includes LIMIT 50 OFFSET 0: true
Large text projection includes a 2048-character bound: true
Client preview shorter than the 6,000-character fixture: true
SELECT example accepted: true
DELETE example accepted: false

Recorded 2026-11-08. Executed locally against synthetic fixtures. No production host or database was contacted. Read the recorded checks.

Explore the related All in Term workflow →

A small command example

Read the comments, confirm the active host and adapt any example names to your environment before running commands.

-- Example schema: replace table and column names
SELECT id, status, created_at
FROM jobs
ORDER BY created_at DESC, id DESC
LIMIT 25;

Further reading

Official documentation for the underlying tools. The workflows and synthetic examples above are editorial guidance, not performance claims.

Bring the workflow into one workspace.

Explore All in Term and follow the installation guide.

Download & setup ↗