Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将消息标记为已看到_Sql Server_Database_Database Design_Data Modeling - Fatal编程技术网

Sql server 将消息标记为已看到

Sql server 将消息标记为已看到,sql-server,database,database-design,data-modeling,Sql Server,Database,Database Design,Data Modeling,我正在制作一个具有以下场景的通知系统 公司A的用户希望向公司B的所有用户4000+发送消息。公司B的每个人都会在其收件箱中收到消息 我在设计高效的数据库设计时遇到了问题,该数据库设计允许我将邮件标记为当B公司的用户单击邮件时看到的,以便下次在用户的收件箱中使用不同的颜色标记邮件,而其他尚未看到邮件的人将获得未读的颜色 我现在的天真方法是在SQL Server中创建一个表,其中有messageId、userId和isSeenbool列,当用户单击ID为的消息时,我会将isSeen列更新为true

我正在制作一个具有以下场景的通知系统

公司A的用户希望向公司B的所有用户4000+发送消息。公司B的每个人都会在其收件箱中收到消息

我在设计高效的数据库设计时遇到了问题,该数据库设计允许我将邮件标记为当B公司的用户单击邮件时看到的,以便下次在用户的收件箱中使用不同的颜色标记邮件,而其他尚未看到邮件的人将获得未读的颜色

我现在的天真方法是在SQL Server中创建一个表,其中有messageId、userId和isSeenbool列,当用户单击ID为的消息时,我会将isSeen列更新为true

问题是:我不想仅仅为了一条消息而在表中插入4k行,因为这样做效率很低,会降低数据库的性能


在我的数据库设计中,我可以做些什么来实现我想要的结果,同时又不会严重影响我的数据库性能?SQL数据库是完成这类任务的合适工具吗?

您描述的方式实际上是实现您想要的目标的最佳方式


如果您的表索引正确,性能将不会很差。

当前的解决方案肯定会降低性能,因为我们有一些拥有10000用户的公司。想象一下A公司的10个用户分别向comapny B发送10条信息……情况可能不会像你想象的那么糟。没有比这更快的方法来做你想做的事。唯一更快的选择就是不要这样做。