看高性能MySQL的时候,看到一个如何求出过去24小时发布的信息
`CREATE TABLE msg_per_hr{
hr DATETIME NOT NULL, cnt INT UNSIGNED NOT NULL, PRIMARY KEY(hr)
};//文中所说的另起一个汇总的表`
文中说:把下面3个查询的结果相加,就得到过去24小时内发布消息的精确数量了
1、`SELECT SUN(cnt) FROM msg_per_hr WHERE hr
BETWEEN
CONCAT(LEFT(NOW(), 14), '00:00') -INTERVAL 23 HOUR
AND
CONCAT(LEFT(NOW(), 14), '00:00') - INTERVAL 1 HOUR;`
2、`SELECT COUNT(*) FROM message
WHERE
posted >= NOW() - INTERVAL 24 HOUR
AND
posted < CONCAT(LEFT(NOW(), 14), '00:00') - INTERVAL 23 HOUR;`
3、SELECT COUNT(*) FROM message WHERE posted >= CONCAT(LEFT(NOW(), 14), '00:00');
既然有了汇总表,那么直接在汇总表查询不就行了吗?为啥还要去庞大的message表count?
3个查询的结果相加,不知道其逻辑关系是怎么,还有就是第二条语句 一时是NOW() - INTERVAL 24 HOUR 一时又是CONCAT(LEFT(NOW(), 14), '00:00') - INTERVAL 23 HOUR
不太明白,求大神解惑。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。