Mysql 加快SQL嵌套查询的速度

Mysql 加快SQL嵌套查询的速度,mysql,sql,Mysql,Sql,我有一个名为ntr\u perf的表,表中有以下列:data,cos,network,tot\u reg,tot\u rej。 我需要获得每对数据cos的tot_reg和tot_rej之和(我需要获取所有数据cos对,并对具有相同数据cos对的所有网络的值求和) 我正在使用以下MySQL查询: SELECT DISTINCT data AS d, cos AS c, (SELECT SUM(tot_reg) FROM ntr_perf WHERE data=d AN

我有一个名为
ntr\u perf
的表,表中有以下列:
data
cos
network
tot\u reg
tot\u rej
。 我需要获得每对数据cos的
tot_reg
tot_rej
之和(我需要获取所有数据cos对,并对具有相同数据cos对的所有网络的值求和)

我正在使用以下
MySQL
查询:

SELECT DISTINCT 
    data AS d, 
    cos AS c, 
    (SELECT SUM(tot_reg) FROM ntr_perf WHERE data=d AND cos=c) AS sumattempts, 
    (SELECT SUM(tot_rej) FROM ntr_perf WHERE data=d AND cos=c) AS sumrej FROM ntr_perf
即使该表只有91.450行(该表有多列索引数据cos),也需要很长时间


可以加快查询速度吗?

这正是group by的设计目的

试试这个:

SELECT data,cos,SUM(tot_reg),SUM(tot_rej) from ntr_perf group by data,cos


您可以使用此查询

SELECT data AS d, cos AS c,
SUM(tot_reg), SUM(tot_reg) where 
data='d' AND cos='c' group by data , cos ;
希望你得到的是。否则请告诉我,我会帮你试试这个,一组一组

SELECT data d,
       cos c,
       SUM(tot_reg) sumattempts,
       SUM(tot_rej) sumrej
FROM ntr_perf 
WHERE data = 'd'  -- if these are values, put in single quotes
AND cos = 'c' -- if these are values, put in single quotes
GROUP BY data, -- even though aliased, the original name needs to be used on the GROUP BY
         cos -- even though aliased, the original name needs to be used on the GROUP BY

这将对您的查询进行分组,并在您发布
WHERE
条件时过滤您的总和:

SELECT 
    data AS d, 
    cos AS c,
    SUM(IIF(data='d' AND cos='c', tot_reg, 0) AS sumattempts,
    SUM(IIF(data='d' AND cos='c', tot_rej, 0)) AS sumrej 
FROM 
    ntr_perf 
GROUP BY 
    data,
    cos

where xon条件缺失。
SUM
子查询中存在
where
条件,因此此查询将返回假结果。@Nebi&Tedo但有疑问的是,这是他解释的。那些where子句只是使用selectMy脚本中的别名进行筛选,对该任务的反应是“我需要获取所有数据cos对,并对具有相同数据cos对的所有网络的值求和”几毫秒而不是几分钟,实际上我需要GROUP BY,但我不知道它的含义。谢谢大家。你能说什么是data=d和cos=c吗?