ORM Benchmarks

A fair comparison of database query latencies across database providers and ORM libraries in the Node.js & TypeScript ecosystem.

Read more about our methodology and result analysisReverse

We have collected the data by running equivalent queries of all ORMs on real-world infrastructure. The table below shows the median values of 500 benchmark iterations that we have executed for each ORM library.

Prisma eye-slash-solid logo Drizzle eye-slash-solid logo TypeORM eye-slash-solid logo
Find all Tooltip icon
Return all records
8.00ms23.09ms5.24ms
Query
Analysis
0msIQR Tooltip icon
The Interquartile Range (IQR) is a statistical measure to describe the distribution of a dataset that's robust against outliers. In this case, the dataset represents the latencies that have been measured across 500 benchmark runs for the Find allquery using Prisma ORM.

A low value indicates that there is less spread in the middle portion of the data.
0msStd Dev Tooltip icon
The Standard Deviation is a statistical measure to describe the distribution of a dataset that's affected by outliers. In this case, the dataset represents the latencies that have been measured across 500 benchmark runs for the Find all query using Prisma ORM.

A low value means that most of the data points are close to the mean. This indicates that there is less overall spread in the data.
1msIQR Tooltip icon
The Interquartile Range (IQR) is a statistical measure to describe the distribution of a dataset that's robust against outliers. In this case, the dataset represents the latencies that have been measured across 500 benchmark runs for the Find allquery using Prisma ORM.

A low value indicates that there is less spread in the middle portion of the data.
6msStd Dev Tooltip icon
The Standard Deviation is a statistical measure to describe the distribution of a dataset that's affected by outliers. In this case, the dataset represents the latencies that have been measured across 500 benchmark runs for the Find all query using Prisma ORM.

A low value means that most of the data points are close to the mean. This indicates that there is less overall spread in the data.
0msIQR Tooltip icon
The Interquartile Range (IQR) is a statistical measure to describe the distribution of a dataset that's robust against outliers. In this case, the dataset represents the latencies that have been measured across 500 benchmark runs for the Find allquery using Prisma ORM.

A low value indicates that there is less spread in the middle portion of the data.
1msStd Dev Tooltip icon
The Standard Deviation is a statistical measure to describe the distribution of a dataset that's affected by outliers. In this case, the dataset represents the latencies that have been measured across 500 benchmark runs for the Find all query using Prisma ORM.

A low value means that most of the data points are close to the mean. This indicates that there is less overall spread in the data.
Histogram Tooltip icon
Higher bars on the left are better because they indicate that more iterations had low latencies.

Filter, paginate & sort Tooltip icon
Return a filtered, sorted and paginated list of records
2.20ms1.91ms1.61ms
Nested find all Tooltip icon
Return all records with a relation
65.27ms1354.03ms58.33ms
Find first Tooltip icon
Return the first record
1.72ms1.56ms1.06ms
Nested find first Tooltip icon
Return the first record with a relation
4.21ms3.20ms4.72ms
Find unique Tooltip icon
Return a record that's identified by its primary key
1.35ms1.27ms0.73ms
Nested find unique 3.49ms3.02ms4.36ms
Create Tooltip icon
Create a new record
2.30ms2.25ms2.91ms
Nested create Tooltip icon
Create two records that are related via a foreign key in a single query
7.90ms6.11ms4.78ms
Update Tooltip icon
Update an existing record
2.11ms1.94ms1.56ms
Nested update Tooltip icon
Update two records that are related via a foreign key in a single query
5.22ms4.08ms3.27ms
Upsert Tooltip icon
Update an existing record or create a new one if it doesn't exist
4.41ms1.91ms3.19ms
Nested upsert Tooltip icon
4.57ms4.04ms3.96ms
Delete Tooltip icon
Delete an existing record
4.60ms4.08ms4.10ms