我有一个项目,用于计算仪表板的 MySQL 表中特定条件的实例。一开始很简单,但在几次“你可以添加...”请求之后,我的程序中出现了多达 86 个不同的查询。我预计未来会有更多“您可以添加...”请求吗?为了提高效率,将数据批量查询到 Java 然后在那里进行排序/计数,还是继续进行单独查询会更好/更快吗?该表很小,现在 <300 行,而且我看不到它会超过 900 行(如果这很重要的话)。
1 回答
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
所有查询都是“SELECT count(*) where [条件 A] 和 [条件 B] 和 [条件 C]”的变体。它设置为每 5 分钟运行一次。
针对此类查询的提示:表达式为 1 或 0 的 SUM() 与表达式为 true 的行的 COUNT() 相同。这是一个方便的 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
这使您可以运行一个查询来扫描表一次,同时“计算”具有不同条件的行。
一旦您了解了 SUM() 的技巧,它就非常简单,并且可以轻松向查询添加更多列以获取其他类型的计数。
添加回答
举报
0/150
提交
取消