我有一个包含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控制台中。 有没有更好的方法来快速执行它?
答案 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用来执行查询的内存。