求消息系统设计
我有100万个用户,要对其中90万用户发送n条不同的消息
用户将对消息已阅未阅做标记,如何设计数据库
记录太大了,高手来吧数据库表设计

解决方案 »

  1.   

    用户表: 用户ID,用户名,创建日期..消息发生记录表: 记录ID,用户ID,消息内容,发送时间,消息状态..
      

  2.   

    --用户表
    CREATE TABLE dbo.users
    (
    userid int IDENTITY(1,1) not NULL PRIMARY KEY,
    username nvarchar(100) not NULL
    )
    --消息记录表
    CREATE TABLE dbo.Msg
    (
    MsgID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    userid INT NOT NULL,
    MsgContent NVARCHAR(MAX),
    SendTime DATETIME,
    IsSucess BIT, --是否发送成功
    IsRead BIT, --是否已经阅读
    CreateTime DATETIME CONSTRAINT DF_Msg_CreateTime DEFAULT(GETDATE())
    )
    --加索引
    CREATE INDEX IX_Msg_userid_IsRead ON dbo.Msg
    (
    userid,
    IsRead
    )
    GO
      

  3.   

    楼上的兄弟无法达到要求,
    IsSucess BIT,    --是否发送成功  
    IsRead BIT,        --是否已经阅读
    是不是针对这条消息,是针对这条消息某个人是否已经阅读
      

  4.   

    b/s的,那就是数据全部在后台了
    使用redis之类的memcache不知道会不会好一点
    邮件id_用户id=1(=已读;0或不存在=未读)