MySQL日期字段的最佳索引

时间:2018-09-09 14:38:24

标签: mysql date indexing

我有一个包含41,000,000行的表,其结构如下: enter image description here

.post-item:hover{transform:translateY(-3%);} 最佳索引是什么,以实现这样的快速过滤

date

1 个答案:

答案 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:将日期文字放在单引号内。