244 query shapes, one tile each, shaded by how much faster Oliver answered: a 3.06 times median, the brightest 290 times faster.290×one user, 50 million rows3.06×median speed-up1.1×60×+under 1.1×Oliver vs ClickHouse 26.3 · 16 Sep 2026
Benchmarks

Oliver beats ClickHouse.

Across 244 query shapes on identical servers, Oliver was 3.06 times faster than ClickHouse at the median, and it ran all of them in less time than ClickHouse took to load the data.

The Oliver team27 September 20264 min read
3.06×median speed-up
290×biggest single win
37s vs 85sthe whole battery
1.6×faster ingest

The setup

ClickHouse is the database we measure ourselves against, because it is very good at exactly this job.

Each engine ran on its own bare-metal server on AWS, pinned to 8 cores and 28 GB of memory. Both loaded the same 50 million rows from one generator over the same JSON wire. We ran ClickHouse 26.3 on its default settings against the Oliver release that was in production that day.

Before timing anything, we checked that both engines held exactly the same 50,000,003 rows.

Total time for all 244 queries

Adding up the time each engine spent on every query gives one total per engine.

Oliver
36.6 s
ClickHouse
84.7 s
Total query time across all 244 shapes, warm. Animated at one tenth of real time.

Oliver needed less than half the time. Loading the 50 million rows took ClickHouse 50 seconds, which is longer than Oliver spent answering everything.

Oliver won every query family

The battery covers what dashboards and agents actually ask: filters, group-bys, per-minute time series, high-cardinality keys, roll-ups across five dimensions, distinct counts, percentiles and JSON attributes. We grouped the 244 shapes into 13 families. Oliver takes all 13 on the median.

Query familyMedian speed-upBest
Time series by dimension
4.6×
46×
Group-by, endpoint
4.6×
28×
Per-minute time series
4.0×
31×
Distinct counts
4.0×
7.1×
Group-by, average and sum
3.9×
17×
Counts and filters
3.7×
290×
Group-by, low cardinality
3.4×
33×
Multi-dimension roll-ups
3.4×
17×
Per-minute series by user
3.0×
4.7×
JSON attributes
3.0×
4.7×
High-cardinality group-by
2.1×
24×
Percentiles
2.0×
20×
Multi-metric group-by
1.4×
4.4×
Median speed-up for each family of query shapes, and the best single result inside it.

How the wins are spread

Here is how many of the 244 shapes reached each level of speed-up.

2× or more
169
3× or more
124
5× or more
61
10× or more
29
Number of query shapes, out of 244, by how much faster Oliver answered them.

169 shapes, more than two thirds of the battery, ran at least twice as fast, and 29 of them ran more than ten times as fast.

The 290× query

The biggest win came from the most ordinary question in analytics: how many events did one user generate?

SELECT count(*) FROM t WHERE user_id = 'u123'

ClickHouse answered in 26 milliseconds, which is respectable. Oliver answered in 0.09 milliseconds. The answer was somewhere in 50 million rows, and Oliver read 502 of them to find it.

Product dashboards ask this question thousands of times a day, one user at a time. At that speed, Oliver can answer it for 290 different users in the time ClickHouse takes to answer it once.

Getting data in

Fast queries over data you can't load quickly are an expensive hobby, so we timed ingest too: the same generator, the same wire, the same 50 million rows.

Oliver
1.60M rows/s
ClickHouse
1.00M rows/s
Load throughput, 50 million rows. Oliver finished in 31 seconds, ClickHouse in 50.

We ran it four times

We have run this benchmark four times in three weeks, against four different builds of the engine, on the same bare-metal setup each time.

8 Sep
2.88×
16 Sep
3.06×
21 Sep
2.96×
24 Sep
2.84×
0×1×2×3×4×
Median speed-up over ClickHouse 26.3 in each full run of the battery.

The median has stayed between 2.84× and 3.06× in every run.

Why Oliver is faster

Most of the gap comes from reading less data. Oliver keeps compact summaries of what each part of the data contains, so a question about one user goes straight to the few places that user appears, which is where the 290× comes from.

Oliver also keeps the shapes dashboards draw most often pre-computed alongside the data. Per-minute counts by status answered in about 6 milliseconds, where ClickHouse took around a quarter of a second.

A query also reaches Oliver as a program instead of a string, so the engine plans filters, time buckets and aggregates together and computes them in the same pass that reads the data. The engine page goes into more detail.

Run it on your own data

The engine in this benchmark is the same one that runs OliverDB Cloud. Start a dedicated or serverless instance at aws.olivercloud.ai, send it your data as JSON, and run the SQL you run on ClickHouse today.

If the data has to stay inside your own cloud account, the same engine runs there too, and we help with the deployment. Get in touch and we will set it up with you.

Building something with an AI agent instead? The free tier gives you a key in about a minute.

Open OliverDB Cloud Talk to us