首页 > 解决方案 > 使用 java stream() 在服务器端 API 中计数是否更好,然后在 spring jpa 中重复使用计数查询调用

问题描述

我想根据三个过滤器/条件计算表中的行数三次。我想知道以下两种方式中哪一种对性能成本效益更好。我们使用 AWS 作为我们的服务器,使用 java spring 开发服务器端 API 和 MySQL 用于数据库。

  1. 利用countMySQL的特性在数据库中对三个过滤条件进行三次查询,得到三个计数的结果。
  2. 首先仅使用一个查询从数据库中获取表的所有行。然后根据三个过滤条件使用java流三次,得到三个计数结果。

标签: javamysqlspringperformancespring-data-jpa

解决方案


在极端情况下使用选项(1)会更好。如果执行速度很慢,SELECT COUNT(*) FROM table那么您应该考虑在 SQL 方面进行一些调整。不确定您使用的是什么,但我找到了这个用于sql server的示例

假设您使用选项(2)并且您有数十万行,我怀疑您的应用程序将耗尽内存(尤其是在高负载下),然后您才有时间担心运行响应时间缓慢SELECT count(*)。更不用说你会有很多不必要的行并减慢数据库和应用程序之间的传输时间


推荐阅读