gpt4 book ai didi

mysql - 根据日期格式统计大表的记录

转载 作者:行者123 更新时间:2023-11-29 07:07:32 24 4
gpt4 key购买 nike

作为引用,这是我当前的表格:

`impression` (  `impressionid` bigint(19) unsigned NOT NULL AUTO_INCREMENT,  `creationdate` datetime NOT NULL,  `ip` int(4) unsigned DEFAULT NULL,  `canvas2d` tinyint(1) DEFAULT '0',  `canvas3d` tinyint(1) DEFAULT '0',  `websockets` tinyint(1) DEFAULT '0',  `useragentid` int(10) unsigned NOT NULL,  PRIMARY KEY (`impressionid`),  UNIQUE KEY `impressionsid_UNIQUE` (`impressionid`)) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=447267 ;

It keeps a record of all the impressions on a certain page. After one day of running, it has gathered 447266 views. Those are a lot of records.

Now I want the amount of visitors per minute. I can easily get them like this:

SELECT COUNT( impressionid ) AS visits, DATE_FORMAT( creationdate,  '%m-%d %H%i' ) AS DATE
FROM `impression`
GROUP BY DATE

当然,这个查询需要很长时间。现在大约 56 秒。

所以我想知道下一步该怎么做。我是否:

  • 在创建日期创建一个索引(我不知道这是否有帮助,因为我正在使用一个函数来更改要分组的数据)

  • 创建分别存储小时和分钟的新字段。

最后一个会导致重复数据,我讨厌那样。但也许这是这种情况下的唯一方法?

或者我应该以其他方式处理它?<​​/p>

最佳答案

如果您经常运行此查询,您可以 denormaize将计算值放入单独的列(可能通过插入/更新时的触发器),然后按该值分组。

您关于小时和分钟的想法也很不错,因为它让您可以用几种不同的方式来分组,而不仅仅是分钟。它仍然是非规范化,但它更通用。

非规范化很好,只要它是合理的并且被理解。

关于mysql - 根据日期格式统计大表的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com