我有一个站内短息 收件箱 和发件箱而且用户量 为 一百万,现在有个问题 就是管理向 这一百万用户 同时发送一条系统消息,那么数据库里就产生了两百万条相同的数据量太大了有没有好的数据库设计方法。(即收件箱、发件箱都各有一百万,所以有二百万知。)

解决方案 »

  1.   

    发件人,收件人,消息内容
    看发件箱的时候只要select 消息内容 from tb where 发件人=123 and ...order by ...
    看收件箱的时候只要select 消息内容 from tb where 收件人=456 and ...order by ...
      

  2.   

    管理员发的短信消息,加个发送时间字段。用户那边加个读信时间字段,如果用户读了就默认所有短信都读取了,把时间改了。不过这样不能做到一一对应。
    比如 短信表:id=100, msg_create_time='2010-04-20 12:00:00',id=99, msg_create_time='2010-04-20 07:00:00'
    用户配置表:read_msg_time = '2010-04-20 08:00:00'
    只要在用户登录时,msg_create_time>=read_msg_time的短信都显示。用户点了链接,则把read_msg_time设为now().
    不过如果要做到一一对应,这个方式可不行。这只能做个大概的。