Sql查询优化以获取更快的结果

时间:2014-07-26 13:55:44

标签: mysql optimization

此查询需要花费大量时间才能执行。我该如何优化它?

SELECT user, count(tweet) FROM tweet WHERE 1 = 1 GROUP BY user

我的数据库有这样的结构:

DATE | USER | TWEET | ID

我想要一个查询来查找每个用户的推文数量。 MYSQL数据库的大小约为3 GB。

1 个答案:

答案 0 :(得分:1)

这是您的查询:

select user, count(tweet)
from tweet
where 1 = 1
group by user;

不幸的是,MySQL在group by的优化方面可能不好。您可以尝试添加索引tweet(user)并将count(tweet)更改为count(*)。另一种可能性是使用该索引并执行:

select u.user, (select count*) from tweet t where t.user = u.user)
from user u;

有时,在子查询中进行聚合会有所帮助,因为MySQL可以更好地利用具有相关子查询的索引。

最后,如果您需要同时为所有用户提供此信息,则可能需要触发器。如果您一次只需要一个用户,那么上述索引将非常有用。