几点:
>此外,作为你过滤的唯一谓词你应该
可能有一个以datetime为第一列的索引.
>您按网页浏览排序.我会假设您想按总和(网页浏览量)订购.
>您查询23小时的数据而不是24.您可能希望在第二天的午夜使用明确的小于
SELECT url, sum(pageviews), sum(int_views), sum(ext_views)
FROM news
WHERE datetime >= '2012-08-29 00:00:00'
AND datetime < '2012-08-30 00:00:00'
GROUP BY url
ORDER BY sum(pageviews) DESC
LIMIT 10;
您可以在datetime,url,pageviews,int_views,ext_views上对此进行索引,但我认为这样会有点过分;所以,如果索引的日期时间不是太大,那么url似乎是一个很好的方法.唯一可以确定的方法是对其进行测试,并确定查询中的性能改进是否值得在索引维护中花费额外的时间.
正如Gordon刚刚在评论中提到的那样,您可能需要查看partitioning.这使您可以查询较小的“表”,该表是较大的表.如果您的所有查询都基于日期级别,那么您可能需要每天创建一个新查询.