繁体   English   中英

加速 SQL 嵌套查询

[英]Speed up SQL nested query

我有一个名为ntr_perf的表, ntr_perf包含以下列: datacosnetworktot_regtot_rej 我需要获得每对数据-cos 的tot_regtot_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM