代码之家  ›  专栏  ›  技术社区  ›  Xel Naga

MySQL中如何加快查询日期时间

  •  0
  • Xel Naga  · 技术社区  · 6 年前
    SELECT *
    FROM LOGS
    WHERE datetime > DATE_SUB(NOW(), INTERVAL 1 MONTH)
    

    我有一个大的表日志(innodb)。当我试图获取上个月的数据时,查询等待的时间太长。

    我为datetime列创建了一个索引,但似乎没有帮助。如何加快查询速度?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Nick B    6 年前

    由于数据库记录插入到最老到最新,您可以创建2个调用。请求最旧记录的ID的第一个调用:

    int oldestRecordID = SELECT TOP 1 MIN(id) 
    FROM LOGS 
    WHERE datetime > DATE_SUB(NOW(), INTERVAL 1 MONTH)
    

    然后使用该id请求id>oldestrecorid:

    SELECT *
    FROM LOGS
    WHERE ID > oldestRecordID
    

    这是多个电话,但可能更快,但我相信你也可以结合这两个电话。

        2
  •  1
  •   Gordon Linoff    6 年前

    可能您唯一能做的就是在 datetime 是的。这将确保值位于同一位置。

    但是,我不认为这能解决你真正的问题。你为什么要回来 全部的 一个月的记录。这是很多数据。

    很有可能,你可以总结一下数据。 在数据库中 只带回来 信息 你需要的不是所有 数据 是的。