mysql - 如何加快Mysql中日期时间的查询速度

标签 mysql sql innodb myisam

SELECT *
FROM LOGS
WHERE datetime > DATE_SUB(NOW(), INTERVAL 1 MONTH)

我有一个大表 LOGS (InnoDB)。当我尝试获取上个月的数据时,查询等待时间太长。

我为日期时间列创建了索引,但它似乎没有帮助。如何加速这个查询?

最佳答案

由于数据库记录是按照从最旧到最新的顺序插入的,因此您可以创建 2 个调用。第一次调用请求最旧记录的 ID:

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

然后使用该 ID 只需请求 ID >oldestRecordID 的所有记录:

SELECT *
FROM LOGS
WHERE ID > oldestRecordID

这是多个调用,但可能会更快,但我相信您也可以合并这两个调用。

关于mysql - 如何加快Mysql中日期时间的查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51023758/

相关文章:

mysql - InnoDB 瓶颈 : Relaxing ACID to Improve Performance

php - 使用 PHP 获取外键

mysql - 在 mysql 4.0 中获取 innodb 表行数的最快方法是什么?

用于网上商店的 MySQL 数据库结构

php - codeigniter,如何获取多个查询并从模型中对其进行计数

sql - 使用 PostgreSQL 更新只读列时引发异常

mysql - 现有表的 SQL 触发器

java - 无法为连接 URL '' : Tomcat & SQL Server JDBC driver 创建类 'null' 的 JDBC 驱动程序

php - SQL/PHP 创建数据库并加载 .CSV

mysql - Joda-Date Mapper for Slick - MappedColumnTyoe