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吗?