Java中的大数据库调用+解析与许多数据库调用

Java中的大数据库调用+解析与许多数据库调用,java,mysql,Java,Mysql,我有一个项目,它统计仪表板MySQL表中特定条件的实例。一开始很简单,但几分钟后你可以添加。。。请求,我的程序中最多有86个不同的查询。我期待更多你能补充。。。今后对它的要求 为了提高效率,将数据批量查询到Java,然后在Java中进行排序/计数,或者继续执行单个查询,会更好/更快吗 这张桌子现在很小 所有查询都是SELECT count*的变体,其中[condition A]和[condition B]以及[condition C]。设置为每5分钟运行一次 这类查询的提示:1或0的表达式总和与

我有一个项目,它统计仪表板MySQL表中特定条件的实例。一开始很简单,但几分钟后你可以添加。。。请求,我的程序中最多有86个不同的查询。我期待更多你能补充。。。今后对它的要求

为了提高效率,将数据批量查询到Java,然后在Java中进行排序/计数,或者继续执行单个查询,会更好/更快吗

这张桌子现在很小 所有查询都是SELECT count*的变体,其中[condition A]和[condition B]以及[condition C]。设置为每5分钟运行一次

这类查询的提示:1或0的表达式总和与表达式为真的行数相同。这是一个方便的特定于MySQL的技巧,其他SQL实现不会将true/false视为1/0

SELECT
  SUM(<condition A>) AS count_A,
  SUM(<condition B>) AS count_B,
  SUM(<condition C>) AS count_C,
  ...
FROM mytable
这使您可以运行一个查询来扫描表一次,同时计算具有不同条件的行

一旦你知道了求和的诀窍,它就非常简单了,并且很容易向查询中添加更多的列来获得其他类型的计数

所有查询都是SELECT count*的变体,其中[condition A]和[condition B]以及[condition C]。设置为每5分钟运行一次

这类查询的提示:1或0的表达式总和与表达式为真的行数相同。这是一个方便的特定于MySQL的技巧,其他SQL实现不会将true/false视为1/0

SELECT
  SUM(<condition A>) AS count_A,
  SUM(<condition B>) AS count_B,
  SUM(<condition C>) AS count_C,
  ...
FROM mytable
这使您可以运行一个查询来扫描表一次,同时计算具有不同条件的行


一旦您了解了求和的诀窍,就可以很容易地向查询中添加更多列以获取其他类型的计数。

数据是由同一个仪表板操作的,还是实时更新的?如果没有,您可以选择在应用程序中缓存数据。@ImJustACowLol它是实时更新的。另一种方法:在细节表上使用数据库触发器,触发器在其中进行聚合并更新摘要表。你的应用程序会得到一些简要记录。第二部分:由于数据是实时更新的,因此每当汇总表发生变化时,都会从数据库中推送通知,而不是让应用程序不断轮询数据库。@不幸的是,AndrewS我是一个比数据库人好得多的Java程序员。在不知道具体查询以及运行查询的频率的情况下,不可能笼统地回答这个问题。我能提供的最一般的建议是,如果86+查询仍能在令人满意的时间内获得数据结果,那么出于模块化编码的原因,运行许多查询可能会更好。数据是由同一个仪表板操作的,还是实时更新的?如果没有,您可以选择在应用程序中缓存数据。@ImJustACowLol它是实时更新的。另一种方法:在细节表上使用数据库触发器,触发器在其中进行聚合并更新摘要表。你的应用程序会得到一些简要记录。第二部分:由于数据是实时更新的,因此每当汇总表发生变化时,都会从数据库中推送通知,而不是让应用程序不断轮询数据库。@不幸的是,AndrewS我是一个比数据库人好得多的Java程序员。在不知道具体查询以及运行查询的频率的情况下,不可能笼统地回答这个问题。我能建议的最一般的事情是,如果86+查询仍然在令人满意的时间内得到数据结果,那么运行许多查询可能更好,只是出于模块化编码的原因。