对于您显示的查询,您不能比上的索引做得更好 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';
1条答案
按热度按时间gorkyyrv1#
对于您显示的查询,您不能比上的索引做得更好
date
你已经有了。查询将检查与日期范围匹配的所有行,但至少不会检查日期范围之外的任何行。如果这使得查询可以检查数千或数百万行,那就没什么帮助了。它必须检查行数。如果需要在更短的时间内对行进行计数的查询,一种策略是创建第二个表,每个日期存储一行,并且与该日期关联的计数。
按天填充计数:
然后可以查询计数总和:
由您来保持后一个表的同步,并在必要时进行更新。
ps:将日期文字放在单引号内。