java - 使用 java stream() 在服务器端 API 中计数是否更好,然后在 spring jpa 中重复使用计数查询调用
问题描述
我想根据三个过滤器/条件计算表中的行数三次。我想知道以下两种方式中哪一种对性能和成本效益更好。我们使用 AWS 作为我们的服务器,使用 java spring 开发服务器端 API 和 MySQL 用于数据库。
- 利用
count
MySQL的特性在数据库中对三个过滤条件进行三次查询,得到三个计数的结果。 - 首先仅使用一个查询从数据库中获取表的所有行。然后根据三个过滤条件使用java流三次,得到三个计数结果。
解决方案
在极端情况下使用选项(1)会更好。如果执行速度很慢,SELECT COUNT(*) FROM table
那么您应该考虑在 SQL 方面进行一些调整。不确定您使用的是什么,但我找到了这个用于sql server的示例
假设您使用选项(2)并且您有数十万行,我怀疑您的应用程序将耗尽内存(尤其是在高负载下),然后您才有时间担心运行响应时间缓慢SELECT count(*)
。更不用说你会有很多不必要的行并减慢数据库和应用程序之间的传输时间
推荐阅读
- python - 在 django 上实现 Typeahead
- c# - 根据在 ASP.NET 中的链接单击时传递的 Id 加载特定数据
- php - 如何删除旧的缓存图像
- java - 如何在 Spring Rest Client 中获取页面的内容
- android - Angular + Firebase Cloud Messaging (FCM) + Cordova (android) - 如何在 FCM 上注册?
- swift - 如何在同名的方法/属性变量中调用全局函数?
- excel - 如何在 SAS 中打开 .sas7bdat 并导出到 excel?
- vue.js - 带有 vue js 的工作箱
- unity3d - 如何避免 Unity Complie 所有标准着色器变体
- python - Pandas:根据数据和列顺序创建数据框