php - 如何快速执行多个mysql查询
问题描述
我正在使用多个 MySQL 选择查询来获取结果。第一个查询的输出是第二个查询的输入,像这样,我使用了 15 个(当时 15 个查询)。因为我想在第 15 阶段之前得到结果。
当我执行所有这些查询时,获得输出需要花费太多时间,例如,产生结果需要超过 15 到 20 分钟。
基本上,我的代码中有 15 个级别,我正在计算每个级别的总量,这就是为什么我为每个级别使用 1 个查询。所以总级别是15,我的MySql查询是15。
我有一个数据库表,其中有 4 列-
ID, MemberID, SponseredID, Amount.
我准备了查询来计算每个级别的金额之和。
您可以检查以下代码:
SELECT SUM(amt) as level1
FROM adm
WHERE sid='MT00001';
SELECT SUM(amt) as level2
FROM adm
WHERE sid IN (SELECT mid
FROM adm
WHERE sid='MT00001');
SELECT SUM(amt) as level3
FROM adm
WHERE sid IN (SELECT mid
FROM adm
WHERE sid IN (SELECT mid
FROM adm
WHERE sid='MT00001'));
SELECT SUM(amt) as level4
FROM adm
WHERE sid IN (SELECT mid
FROM adm
WHERE sid IN (SELECT mid
FROM adm
WHERE sid IN (SELECT mid
FROM adm
WHERE sid='MT00001')))
直到第 4 级,这 4 个查询也需要太多时间来执行。
我得到了结果,但是执行所有 15 个查询需要花费太多时间,大约需要 15 分钟。
解决方案
不要为每个表创建子查询,而是尝试使用join
.
对于您的问题,请使用group by
每个group
or的子句category
。搜索recursive query
。
您可以将此作为参考https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-2017
推荐阅读
- google-sheets - 谷歌表 SUMIF 的固定范围问题
- css - ngFor 循环中的 Angular CSS 行/列设计
- javascript - 使用 .sort 从数组 asc 或 desc 排序数据
- r - 在 R 中为两个向量创建所有排列
- android - onBackPressed() 应用程序未关闭
- php - 如何删除多个连接,执行需要更多时间。如何改善查询结果
- java - Java中将JSON字符串转换为ArrayList的ArrayList
- php - 使用事件名而不是 ID 删除记录
- python - 把函数放在后台
- javascript - d3.js 如何仅将那些节点动态添加到可折叠树中,从数据表中选择