首页 > 解决方案 > 如何快速执行多个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 分钟。

标签: phpmysqlsqldatabasedatabase-design

解决方案


不要为每个表创建子查询,而是尝试使用join.

对于您的问题,请使用group by每个groupor的子句category。搜索recursive query

您可以将此作为参考https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-2017


推荐阅读