SQLore
FeaturesPricingDownloadAboutBlogContact
Start freeStart for free
SQLore
HomeFeaturesSolutionsPricingDownloadCompareFAQAboutBlogContact

SQLore © 2026

TermsPrivacyRefunds
Download for macOSDownload for WindowsSign in
  1. Home
  2. Blog
  3. Text-to-SQL benchmarks do not predict your schema
30 May 2026·5 min readText-to-SQLEvaluation

Text-to-SQL benchmarks do not predict your schema

A tool advertising 90% on a public benchmark is telling you about that benchmark's schema. Yours has 1,700 tables and a boolean called flag_2. Here is a five-question test that predicts something.

Text-to-SQL benchmark scores do not predict accuracy on production databases because benchmark schemas are small, consistently named and self-documenting. Real schemas are large, inconsistent, and carry meaning that exists nowhere in the catalog — so the only useful evaluation is a set of your own questions against your own database.

Public text-to-SQL benchmarks did the field a real service: they made progress measurable at a point when everyone was demoing on their own cherry-picked examples. They are also close to useless for deciding which tool to buy, and the reason is not that they are badly built.

What benchmark schemas have that yours does not

  • •A sensible size. Benchmark databases have tens of tables. Production warehouses have hundreds to thousands, which changes the problem from comprehension to retrieval.
  • •Consistent naming. Benchmark columns are called `student_id`. Yours has `cust_id`, `customerId` and `fk_cust` in three tables written in three different years.
  • •Self-documenting semantics. A benchmark schema means what it says. Yours has a boolean called `flag_2` that gates refund eligibility, and everybody who knew that has left.
  • •No tribal knowledge. In your database, "active" means `status_id = 3` and everyone knows to exclude `is_internal`. Nothing in the catalog says so.

A system tuned to score well on tidy schemas is being optimised on a distribution your database is not drawn from. That is not cheating — it is just a different problem wearing the same name.

The other reason the number misleads

Execution accuracy scores a query as right or wrong. In practice the cost of those two failures differs by orders of magnitude. A query that errors costs a retry. A query that runs, returns a plausible number and is silently four times too large because of a fan-out costs a decision. A single percentage collapses both into one figure, and the second is the one that should keep you up.

What to measure instead

Build your own benchmark. It takes an afternoon and it is the only number that will predict anything.

  1. 1.Collect twenty questions people actually asked your data team in the last month. Real ones, in the words they used.
  2. 2.Have someone who knows the schema write the correct SQL and record the correct answer.
  3. 3.Run all twenty through each candidate tool.
  4. 4.Score three buckets, not one: right, obviously wrong, and plausibly wrong. The third bucket is the one that decides.
  5. 5.Repeat on your worst schema, not your cleanest. The cleanest one is where every tool looks fine.

Twenty questions is enough to separate tools decisively, because on a real schema the gap between a system that retrieves your foreign keys and one that does not is not subtle.

Why we do not publish an accuracy number

We could run the benchmarks and quote a figure — everyone does, and the figures are all high. It would tell you nothing about your schema, and it would sit on a marketing page next to the thing that actually answers the accuracy question: every answer, however it is presented — as a chart, a table or a single figure — carries the SQL that produced it. If you can read the query behind a number, its correctness is something you check in five seconds rather than something you take on our word.

The free plan has no card and no expiry for the same reason. Twenty of your own questions against your own database is a better evaluation than anything we could publish about ourselves.

Related reading

Evaluation

Choosing A SQL AI Tool: What Actually Differentiates Them

Read

The technique

Natural Language To SQL, Done Against A Real Schema

Read

The landscape

Database AI: An Honest Map Of What Works

Read

More posts

  • Choosing a chart for a SQL result, without asking the model
  • How to set up a read-only database user for an AI tool
SQLore platform

Stop Writing The
Same Three Joins

Start free, upgrade when you are asking enough questions for it to matter.

Start for freeContact sales
sqlore.com

New chat

Search chats

TODAY

Orders by month

PREVIOUS 7 DAYS

Top products by revenue

PREVIOUS 30 DAYS

Repeat customer rate

Revenue by category

Average order value

Refunds by reason

Customers by city

Cart abandonment

Slowest shipping lanes

Discount impact on margin

Inventory turnover

Order statistics

SQLoredesktopretail_db · default⌘K

Order statistics for this year

Reasoning — 2 steps, 2 queries

Total orders · Delivered · In transit · Cancelled

1 row · 10 ms

Stat

15,600

Total orders

13,942

Delivered

1,412

In transit

246

Cancelled

orders by category

4 rows · 11 ms

LineDonutBar
8,4006,3004,2002,1000
ACCESSORIESPERIPHERALSFURNITUREDISPLAYS

There are 15,600 orders in retail_db for the year to date.

  • Status: 13,942 have been delivered and 1,412 are still in transit.
  • Category: most sit in Accessories (8,420), followed by Peripherals (4,180), Furniture (2,140) and Displays (860).

Revenue by payment method

Reasoning — 1 step, 1 query

Ask about your database…

Answers come from SQL run against your database.