我在users
表的项目中有很多用户。我有一个用于notifications
的第二个表。当用户收到他的通知时,会将其添加到通知表中,其中包含user_id
和read
(真/假)标记。
现在,如果我想为每个用户添加通知(例如网站脱机等),我如何为users表中的每个用户添加一行?除了auto_incremented行id之外,新行完全相同,但每个新行都必须指定用户ID。
当然我可以在php中编写一个脚本来生成大量的sql查询来执行此操作并使用多查询插入一次性发送它们,但如果我有数千个用户,这似乎在计算上很昂贵。
概念查询: FOR users.id as user_id
INSERT INTO notifications VALUES (,user_id=user_id,msg='We will be going offline at 5:00!',read='0')
那可以吗?
谢谢!
答案 0 :(得分:0)
如果您有数千名用户,那么生成数千个SQL查询并将其发送到您的MySQL服务器并不重要。
但如果你有数百万用户,事情会发生变化。
一个经济实惠的选择是,向表格写一个通知,例如system_notifications
。在您的网页上不仅会显示notifications
,还会显示system_notifications
。
然后为已经阅读过这些通知的用户保存ID。
e.g。
system_notifications table
| id | message |
system_notifications_read_users table
| id | user_id |
然后,您只能在用户阅读通知时操作您的数据库。
当您的系统通知已过期时(例如您已完成停机时间),您可以将其从之前说过的两个表中删除。