我正在做一项工作,在其中我不得不在不同的技术之间做出选择,以遵循我的项目的简单规则。 问题是我必须检查用户是否是第一次执行插入任务。因为如果用户是第一次这样做,我必须给用户奖励积分。所以,问题是,每次用户执行插入任务时“如果用户是第一次发帖,我是否必须针对该用户检查整个表?或者我应该在我的列表中添加一列/一个标志表,为此目的。如果用户群增加到数千,我陷入了最快和内存效率最高的优点和缺点。
提前致谢, :-)
最佳答案
听起来您要反复讨论的设计决策是所谓“具体化 View ”的一个特例。 View 存储查询,并将结果作为表提供。物化 View 存储查询的结果。您发现的优点和缺点都是真实的。
对于单个标志,这非常节省空间,因此也节省时间。您真正想问自己的问题是:使用标志时的加速值得更新标志时的减速吗?没有普遍的答案。
您可能还需要编写一些额外的代码,通过扫描整个数据库来使标志与实际情况保持一致。每当同一事实被存储多次时,就会出现矛盾的可能性。理论上来说,这件事是不可能搞砸的。事实上,墨菲定律盛行。
关于mysql - 在数据库中拥有标志是否比每次查询表更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988980/