数据库成千上万的数据最佳存储解决方案

时间:2018-07-03 10:07:53

标签: php mysql sql

我有一个消息表,我的当前消息可以分配给某些人查看,因此我想到了使用两个表来实现此功能,以下是我的主要消息表:

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亿条数据,维护成本太高了,一旦删除消息,就需要删除表中的所有记录。这将导致卡被卡住。还有其他更好的设计吗?

0 个答案:

没有答案