mysql - 获取时间需要时间
问题描述
我在简单查询下运行,执行时间为 1 秒,但获取时间为 30 秒。它总共包含 100 000 条记录
SELECT id, referrer, timestamp
FROM masterstats_innodb
WHERE video = 1869 AND timestamp between '2011-10-01' and '2021-01-21';
在视频和时间戳列上创建索引,甚至在时间戳表上创建范围分区。可以做些什么来更快地获取结果吗?
解决方案
请提供SHOW CREATE TABLE
。
计划A: INDEX(video, timestamp)
B计划-由于“覆盖”而稍微好一些:
INDEX(video, timestamp, referrer, id)
PARTITIONing
不会比索引更有助于此查询的性能。
你说“它”包含 100K 行——你指的是表吗?或者只是返回的行数。如果是'table',那么索引会有所帮助。如果是“结果集”,那么您将受到必须发送这么多行的限制。客户将如何处理 100K 行?服务器可以压缩数据(例如以某种方式总结它)吗?
推荐阅读
- java - 带有 Spring 和模块的六边形架构
- javascript - 使用 javascript 或 jquery 动态获取每个表列的所有值
- c# - Asp.net IDentity 2 Database First AspNetUserLogins' 没有定义键
- ruby-on-rails - Rails webpacker.yml,extract_css 选项
- regex - 如何在单词匹配之后和其他特定单词之前获取行?
- openlayers - OpenLayers:查询 TileImage 源中的像素而不在地图上显示图层
- django - Django 自动完成表单媒体标签问题
- sql - 这种类型的连接称为什么连接,连接在最后是合格的?
- git - Git - 查找提交消息包含特定字符串的文件
- angular - Highstock 图表 - 我希望图表从 x 轴上的 0%(开始)位置开始