[英]Speed up SQL nested query
我有一个名为ntr_perf
的表, ntr_perf
包含以下列: data
、 cos
、 network
、 tot_reg
、 tot_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行(表有一个多列索引data-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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.