答案 0 :(得分:1)
对于您显示的查询,您做不到的事情要比已经拥有的date
上的索引好。该查询将检查与日期范围匹配的所有行,但至少不会检查该日期范围以外的任何行。如果那使查询检查成千上万的行,那将无济于事。它必须检查行以对其进行计数。
如果您需要一个查询以更少的时间对行进行计数,则一种策略是创建第二个表,该表存储每个日期一行,并计算与该日期关联的计数。
CREATE TABLE market_db_candle_count_by_day (
date DATE PRIMARY KEY,
count INT UNSIGNED NOT NULL
);
使用每天的计数填充它:
INSERT INTO market_db_candle_count_by_day
SELECT date, COUNT(*)
FROM market_db_candle
GROUP BY date;
然后,您可以查询计数的总和:
select sum(count) as count from market_db_candle_count_by_day
where date >= '2018-09-05' and date <= '2018-09-09';
由您决定使后者保持同步,并在必要时进行更新。
PS:将日期文字放在单引号内。