我想查询一个有大约7000万条记录的表。查询如下:
SELECT * FROM tweetentities
WHERE applicationId = 6
AND isRetweet = false
AND (CURDATE() <= DATE_ADD(tweetDate, INTERVAL 7 DAY));
我想要做的是尝试使用appId和isRetweet等其他标准在桌面上获取超过7天的旧记录。我想知道的要点是,如果我只请求必要的列而不是所有带有“*”符号的列,查询的工作速度会更快。或者,如果您有更好的想法优化上述查询,请告诉我这个。
感谢。
答案 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)
。