Skip to main content

Excessive number of rows returned

Optimize provides recommendations to help you identify and resolve performance issues caused by excessive number of rows returned from a query.

The following query targeting a User model does not provide a take option:

await prisma.user.findMany({ where: { email: "janedoe@gmail.com" }})

What is the problem?

When a query is executed without specifying a limit, it will return all relevant rows, which can lead to several issues:

User experience

  • Viewing data: Users typically need only a portion of the data at any given time, not all of it at once.
  • Impact on the user's device: Displaying all the data at once can strain the user's device resources. For example, loading thousands of rows in a web application can slow down or freeze the browser, consuming significant memory and CPU resources.
  • Waiting time: Retrieving a large number of rows can significantly increase the time it takes to get the data from the database to the user's device.

Resource Utilization

  • Unnecessary data load: Processing more data than required wastes valuable resources.
  • Memory usage: Excessive memory consumption can lead to inefficiency and, in severe cases, cause the system to run out of memory, disrupting the service.