高性能MySQL,如何求出24小时发贴的数量?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

高性能MySQL,如何求出24小时发贴的数量?

落地花开啦 2016-02-14 10:24:25 1833

看高性能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
不太明白,求大神解惑。

关系型数据库 MySQL
分享到
取消 提交回答
全部回答(0)
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题