【发布时间】:2011-06-23 05:51:36
【问题描述】:
作为参考,这是我当前的表:
`印象`( `impressionid` bigint(19) unsigned NOT NULL AUTO_INCREMENT, `creationdate` 日期时间不为空, `ip` int(4) 无符号默认 NULL, `canvas2d` tinyint(1) 默认 '0', `canvas3d` tinyint(1) 默认“0”, `websockets` tinyint(1) 默认 '0', `useragentid` int(10) 无符号非空, 主键(`impressionid`), 唯一键`impressionsid_UNIQUE`(`impressionid`) ) 引擎=InnoDB 默认字符集=latin1 AUTO_INCREMENT=447267 ;它会记录某个页面上的所有展示次数。经过一天的运行,它已经收集了 447266 次观看。这些记录很多。
现在我想要每分钟的访问者数量。我可以像这样轻松获得它们:
SELECT COUNT( impressionid ) AS visits, DATE_FORMAT( creationdate, '%m-%d %H%i' ) AS DATE
FROM `impression`
GROUP BY DATE
当然,这个查询需要很长时间。现在大约 56 秒。
所以我想知道下一步该怎么做。我:
在创建日期创建一个索引(我不知道这是否有帮助,因为我正在使用一个函数来更改此数据的分组依据)
创建分别存储小时和分钟的新字段。
最后一个会导致重复数据,我讨厌这样。但也许这是这种情况下的唯一方法?
或者我应该以不同的方式去做吗?
【问题讨论】: