我有一个消息表,我的当前消息可以分配给一些人查看,所以我想到用两个表来实现这个功能,下面是我的主要消息表:
create table tbMessages (
`iMessageId` int unsigned not null auto_increment,
`sContent` varchar(1000) not null default '',
`dtCommitTime` datetime not null default '0000-00-00 00:00:00',
primary key `pk_iMessageId` (`iMessageId`)
)engine=innodb default charset=utf8mb4;
我需要设置指定的人来查看消息,所以我设计了一个tbmessages表来表示用户和消息之间的关系。下面是我的tbusermessages表:
create table tbUserMessages (
`iSeqId` int unsigned not null auto_increment,
`iUserId` int unsigned not null default 0 comment 'user id',
`iMessageId` int unsigned not null default 0,
`dtCommitTime` datetime not null default '0000-00-00 00:00:00',
primary key `pk_iSeqId` (`iSeqId`)
)engine=innodb default charset=utf8;
然后,我发现每次创建或说推送消息时,都需要在tbusermessages表中插入n条记录。由于可以批量选择多个用户团队,因此可能会发生这种情况。每一条消息都会被创建并被额外写入。在tbusermessages表中输入1亿条数据,维护成本太高,一旦删除消息,就需要删除表中的所有记录。这将导致卡卡住。还有其他更好的设计吗?
暂无答案!
目前还没有任何答案,快来回答吧!