gpt4 book ai didi

mysql - 这是非规范化的情况吗?

转载 作者:行者123 更新时间:2023-11-29 04:14:14 25 4
gpt4 key购买 nike

我有一个拥有大约 30,000 名成员的站点,我正在向该站点添加一项功能,该功能涉及从 40 条可能的消息池中发送随机消息。成员永远不会收到相同的消息两次。

一个表包含 40 条消息,另一个表映射消息和成员之间的多对多关系。

一个 cron 脚本每天运行,从 30,000 个成员中选择一个成员,从 40 个中选择一条消息,然后检查这条消息之前是否已发送给该用户。如果没有,它会发送消息。如果是,它将再次运行查询,直到找到该成员尚未收到的消息。

我现在担心的是这个 m-m 表会变得非常大:在 30,000 个成员和 40 条消息的情况下,我们已经有 120 万行,我们必须通过这些行来搜索尚未发送的消息。

这是非规范化的情况吗?在成员表中,我可以添加 40 列(message_1、message_2 ... message_40),每次发送消息时都会在其中添加 1 标志。如果我没记错的话,这将使 cron 脚本中的查询运行得更快

?

最佳答案

我知道这不能回答您最初的问题,但如果您选择所有尚未发送给用户的消息然后随机选择其中一条,会不会更快?

在这里查看这个伪 mysql:

SELECT 
CONCAT_WS(',', messages.ids) unsent_messages,
user.id user
FROM
messages,
user
WHERE
messages.id NOT IN (
SELECT
id
FROM
sent_messages
WHERE
user.id = sent_messages.user
)
GROUP BY ids

关于mysql - 这是非规范化的情况吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com