简单计数查询需要花费太多时间来执行

时间:2017-09-18 17:22:13

标签: mysql phpmyadmin

我有一个包含36402933条记录的数据库,但是当我运行以下简单查询时,

select count(user-id) 
from (Table) 
where time>'2006-04-07 22:59:59' 
and time<'2006-04-07 23:59:59 ';

执行大约需要1分钟。在Mysql控制台中。 有没有更好的方法来快速执行它?

4 个答案:

答案 0 :(得分:3)

SELECT COUNT(user-id)
FROM (Table)
WHERE time BETWEEN '2006-04-07 22:59:59'
AND '2006-04-07 23:59:59';

并创建一个TIME的INDEX字段。

答案 1 :(得分:1)

您可以创建时间字段索引以加快此查询速度。但如果它是varchar(似乎是这样),它将永远是你的问题。将其转换为正确的DateTime类型并创建索引将是最佳解决方案。

答案 2 :(得分:1)

是的,在时间字段上放置一个索引。

和/或检查查询计划,看看是否带来了一些建议

答案 3 :(得分:1)

你可以做几件事。

1)确保将时间编入索引

2)对结果设置限制

SELECT count(`user-id`) 
    FROM (Table) 
    WHERE `time` >'2006-04-07 22:59:59' 
    AND `time` <'2006-04-07 23:59:59 ';

3)增加mysql用来执行查询的内存。