如何在mysql中加速datetime查询

v6ylcynt  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(525)
SELECT *
FROM LOGS
WHERE datetime > DATE_SUB(NOW(), INTERVAL 1 MONTH)

我有一个大表日志(innodb)。当我试图获取上个月的数据时,查询等待的时间太长。
我为列datetime创建了一个索引,但似乎没有帮助。如何加快查询速度?

snvhrwxg

snvhrwxg1#

因为数据库记录是从最旧到最新插入的,所以可以创建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

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

gzjq41n4

gzjq41n42#

可能您唯一能做的就是在上创建聚集索引 datetime . 这将确保这些值位于同一位置。
然而,我不认为这能解决你真正的问题。你为什么要把一个月的记录都带回来。这是大量的数据。
很可能,您可以对数据库中的数据进行汇总,只带回所需的信息,而不是所有的数据。

相关问题