我正在开发一个有效的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
答案 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
捕获日期之前或之前的所有时间戳。