sql - MySQL 具有频繁 MAX() 查询的日期时间列的索引?

我在 MySQL 8 中有一个 SQL 查询,以获取列中最新的 date,以及 table 中所有记录的计数:

SELECT max(ModificationTimestamp) as lastUpdate, count(*) as total FROM mls_data;

table 中大约有 300 万行,执行查询大约需要 30 秒。

我怎样才能使这个查询执行得更快?指数?配置设置?增加 InnoDB 缓冲区?

回答1

只需在该列上添加一个索引,MAX() 查询就会很快:

create index modificationtimestamp_idx on mls_data(ModificationTimestamp)

但是,您的问题可能与 count(*) 有关,因此请在使用和不使用 count(*) 的情况下进行测试。如果您不需要实时结果,您可以做到这一点并创建一个计划,每 5 分钟更新一些统计信息 table 并使用 count 和 max 。

相似文章

最新文章