优化特定sql脚本的mysql查询

时间:2014-03-03 19:30:02

标签: mysql sql query-optimization

我想查询一个有大约7000万条记录的表。查询如下:

SELECT * FROM tweetentities 
 WHERE applicationId = 6 
   AND isRetweet = false 
   AND (CURDATE() <= DATE_ADD(tweetDate, INTERVAL 7 DAY));

我想要做的是尝试使用appId和isRetweet等其他标准在桌面上获取超过7天的旧记录。我想知道的要点是,如果我只请求必要的列而不是所有带有“*”符号的列,查询的工作速度会更快。或者,如果您有更好的想法优化上述查询,请告诉我这个。

感谢。

1 个答案:

答案 0 :(得分:4)

这是您的查询:

SELECT *
FROM tweetentities
WHERE applicationId = 6 AND
      isRetweet = false AND
      (CURDATE() <= DATE_ADD(tweetDate, INTERVAL 7 DAY));

你应该把它重写为:

SELECT *
FROM tweetentities
WHERE applicationId = 6 AND
      isRetweet = false AND
      tweetDate >= DATE_ADD(CURDATE(), INTERVAL -7 DAY)

然后构建索引tweetentities(applicationId, isRetweet, tweetDate)