当前位置: 首页 > 知识库问答 >
问题:

请教关于mysql表数据过大如何优化日期查询的问题?

蒋茂材
2023-07-11

前提条件

假如我有一张list表有800万条数据,id是自增字段,time是无规律增长的时间戳,非索引

id ... time
1 ... 1688572800
2 ... 1688745599
... ... ...
8283122 ... 1689026400
8283123 ... 1689012634

现在我要查询time16885728001688745599之间的数据(示范中查询的时间戳是开头两行,实际运行过程中可能是几百万行数据中的某100行数据)

SELECT * FROM `list` WHERE `time` BETWEEN 1688572800 AND 1688745599;

问题

  • 每次查询要耗费4秒多,数据量还在不断增加
  • 想过添加time为索引,但是time是无规律的时间戳,设为索引就相当于有几百万条索引了

那么请问这种情况,要如何优化?还是说无解了。

共有2个答案

高德水
2023-07-11

首先索引占不了多少空间的,你可以设置完索引后,用工具看一下,没多少的正常操作。

傅玮
2023-07-11

在这种情况下,可以考虑以下优化方法:

1添加一个分区列:你可以将表按照时间范围进行分区。例如,每个月或每个季度创建一个新的分区。这样可以减少查询的数据量,并提高查询性能。

2对时间字段进行哈希索引:尽管时间字段是无规律的时间戳,但你可以使用哈希函数来将时间戳转换为哈希值,并将该哈希值作为索引。这样可以减少索引的大小,提高查询性能。

3使用缓存:如果查询的时间范围不经常变化,你可以考虑将查询结果缓存起来,以减少后续查询的时间消耗。

4数据库分库分表:如果你的数据量非常大,你可以考虑将数据分散到多个数据库或多个表中,以减少查询的数据量。

5使用异步查询:如果查询的响应时间可以容忍延迟,你可以将查询操作转换为异步方式,以减少对主数据库的直接访问。

需要根据实际情况评估和实施这些优化方法,并根据系统的需求和资源来选择最适合的方案。

 类似资料:
  • 有ci_trail表,字段为:id, uid(用户id), address(地址), create_time 记录人的定位轨迹,此表大概有100w条数据。想查询每个人最新的一条地址信息。使用如下sql: 查询计划如下图: 可见进行了全表扫描,查询效率很低,请问这种情况应该如何优化sql? 已解决 方案1: 方案2: 先将子查询中的id查询出来,然后将id的结果集逗号隔开填充到in中。因为in的内容

  • 我有一个需要50秒的查询 security_tasks中的记录=841321 relations中的记录=234254 我能做些什么让它快一点,比如快1秒或2秒 有什么想法吗?

  • 在MySQL数据库中,我遇到了一个问题,当我在执行一个JOIN查询时,发现查询性能显著降低,特别是在两个大表之间进行JOIN操作时。我的两个表分别是orders(订单表,大约有1000万条记录)和customers(客户表,大约有500万条记录),它们通过customer_id字段相关联。我已经为这两个表的customer_id字段建立了索引,但是在执行如下JOIN查询时,耗时仍然较长: 运行环境

  • 本文向大家介绍MySQL的子查询及相关优化学习教程,包括了MySQL的子查询及相关优化学习教程的使用技巧和注意事项,需要的朋友参考一下 一、子查询 1、where型子查询 (把内层查询结果当作外层查询的比较条件) 2、from型子查询 (把内层的查询结果供外层再次查询) #用子查询查出挂科两门及以上的同学的平均成绩 思路: 3、exists型子查询 (把外层查询结果拿到内层,看内层的查询是否成立)

  • 问题内容: 从查询计划来看,如何确定最能在哪里进行优化? 我很欣赏要检查的第一件事是是否使用了良好的索引,但是除此之外,我有些困惑。通过过去的反复试验,我有时发现执行连接的顺序可以很好地改进,但是从执行计划中如何确定呢? 尽管我非常想对如何优化查询有一个很好的一般理解(建议多加赞赏!),但我也意识到,讨论具体案例通常比抽象讨论要容易得多。由于我目前正在用这个把头撞在墙上,因此您的想法将不胜感激:

  • 本文向大家介绍mysql大数据查询优化经验分享(推荐),包括了mysql大数据查询优化经验分享(推荐)的使用技巧和注意事项,需要的朋友参考一下 正儿八经mysql优化! mysql数据量少,优化没必要,数据量大,优化少不了,不优化一个查询10秒,优化得当,同样查询10毫秒。 这是多么痛的领悟! mysql优化,说程序员的话就是:索引优化和where条件优化。 实验环境:MacBook Pro MJ