mysql 如何加速时间范围查询?

wtlkbnrh  于 2023-01-20  发布在  Mysql
关注(0)|答案(1)|浏览(128)

我有一个MySQL数据表,里面有大约3000万条记录,其中一个字段是create_time,这是一个时间戳。
我想获取指定时间范围内的记录计数,并使用唯一关键字获取唯一用户计数。
SQL语句为:

select count(distinct owner_id) from code_orange_checkpointrecord 
where create_time between '2023-01-01 00:00:00' and '2023-01-30 23:59:59';

但是查询非常慢,我试着在create_time上创建索引,结果慢了很多。
我觉得我做错了什么?

q3qa4bjr

q3qa4bjr1#

您向我们展示的精确查询将通过此多列索引加速。

CREATE INDEX create_owner  
    ON code_orange_checkpointrecord (create_time, owner_id);

顺便说一下,最好避免使用BETWEEN作为时间范围,而是使用BETWEEN来获取一月的所有记录。23:59:59可能不是该月的最后一个精确时间戳,因此最好使用<和您不需要的第一个时间戳。

where create_time >= '2023-01-01 00:00:00' 
  and create_time <  '2023-02-01 00:00:00';

相关问题