优化"小于"询问

时间:2016-02-09 23:13:41

标签: mysql sql datetime

我正在开发一个有效的MySQL查询,但速度很慢,即使只有大约11,000行。

   describe select date(date_added) as curr_date, 
     (select count(*) from calendar_entries as ce where date(date_added)<=curr_date ) as until_count
   from
   calendar_entries
   group by date(date_added)

目标是随着时间的推移测量表的增长,因此对于表更改的每一天,给我当时的总行数。它可以用某种总和来完成,即(伪代码)

Total(n) = Total(n-1)+numberAdded(n)

但我不确定如何在SQL

中解决这个问题

A

1 个答案:

答案 0 :(得分:1)

好的,首先您需要知道更改表的日期。

       SELECT DISTINCT DATE(date_added) active_date FROM calendar_entries

然后你需要弄清楚如何在每个日期之前或之前计算条目。

SELECT COUNT(*) rows_added, b.active_date on_or_before
  FROM calendar_entries a
  JOIN (
           SELECT DISTINCT DATE(date_added) active_date FROM calendar_entries
       ) b ON a.date_added < b.active_date + INTERVAL 1 DAY

快?也许不是。

请注意a_timestamp < a_date + INTERVAL 1 DAY捕获日期之前或之前的所有时间戳。