具有多个子查询的查询优化

时间:2014-10-08 05:27:18

标签: mysql sql

我想要检索数据 这个月的米数减去上个月的米数, 并根据各自的代码扣除仪表的价值。 然后总结整数。

大约有8000条记录。

但我尝试拍摄5条记录,需要时间2:53秒, 100条记录需要时间(1分1:57秒)。 真的很重要。

我有这样的查询。

SELECT code hvCode,
       IFNULL( (SELECT meter 
               FROM bmrpt 
               WHERE waktu_foto LIKE '2014-05%' 
               GROUP BY code HAVING code = hvCode),0 )
      -IFNULL( (SELECT meter 
               FROM bmrpt WHERE waktu_foto LIKE  '2014-04%' 
               GROUP BY code HAVING code = hvCode),0 )hasil
FROM bmrpt group by code;

是否有人有想法更改要优化的查询?

这是sqlfiddle http://www.sqlfiddle.com/#!2/495c0/1

最好的问候

1 个答案:

答案 0 :(得分:0)

虽然你的问题不清楚,但尝试低于子查询,正如我所理解的那样

SELECT COALESCE(SUM(`meter`),0) FROM table WHERE code ='hvCode' AND MONTH(`date_column`) = 5 
- 
SELECT COALESCE(SUM(`meter`),0) FROM table WHERE code ='hvCode' AND MONTH(`date_column`) = 4