首页 > 解决方案 > 获取时间需要时间

问题描述

我在简单查询下运行,执行时间为 1 秒,但获取时间为 30 秒。它总共包含 100 000 条记录

SELECT id, referrer, timestamp  
FROM masterstats_innodb 
WHERE video = 1869 AND timestamp between '2011-10-01' and '2021-01-21';

在视频和时间戳列上创建索引,甚至在时间戳表上创建范围分区。可以做些什么来更快地获取结果吗?

标签: mysqlsqldatabasequery-optimizationdatabase-administration

解决方案


请提供SHOW CREATE TABLE

计划A: INDEX(video, timestamp)

B计划-由于“覆盖”而稍微好一些:

INDEX(video, timestamp, referrer, id)

PARTITIONing不会比索引更有助于此查询的性能。

你说“它”包含 100K 行——你指的是表吗?或者只是返回的行数。如果是'table',那么索引会有所帮助。如果是“结果集”,那么您将受到必须发送这么多行的限制。客户将如何处理 100K 行?服务器可以压缩数据(例如以某种方式总结它)吗?


推荐阅读