mysql - 在数据库中拥有标志是否比每次查询表更好?

标签 mysql database database-design erd

我正在做一项工作,在其中我不得不在不同的技术之间做出选择,以遵循我的项目的简单规则。 问题是我必须检查用户是否是第一次执行插入任务。因为如果用户是第一次这样做,我必须给用户奖励积分。所以,问题是,每次用户执行插入任务时“如果用户是第一次发帖,我是否必须针对该用户检查整个表?或者我应该在我的列表中添加一列/一个标志表,为此目的。如果用户群增加到数千,我陷入了最快和内存效率最高的优点和缺点。

提前致谢, :-)

最佳答案

听起来您要反复讨论的设计决策是所谓“具体化 View ”的一个特例。 View 存储查询,并将结果作为表提供。物化 View 存储查询的结果。您发现的优点和缺点都是真实的。

对于单个标志,这非常节省空间,因此也节省时间。您真正想问自己的问题是:使用标志时的加速值得更新标志时的减速吗​​?没有普遍的答案。

您可能还需要编写一些额外的代码,通过扫描整个数据库来使标志与实际情况保持一致。每当同一事实被存储多次时,就会出现矛盾的可能性。理论上来说,这件事是不可能搞砸的。事实上,墨菲定律盛行。

关于mysql - 在数据库中拥有标志是否比每次查询表更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988980/

相关文章:

java - 无法从spring项目连接到mysql数据库

php - 从 PHP(使用 mysqli)为 MySQL 准备语句

MYSQL - Union SELECT 和 GROUP BY 不起作用

sql - 共享一张 table 还是不共享一张 table ?

php - MYSQL 删除查询在控制台中有效,但在 PHP 脚本中无效

php - MySQL 和 PHP - 不是唯一的表/别名

android - 在 ListView 中格式化文本(从数据库填充)

database - Fabric.js - 如何使用自定义属性在服务器上保存 Canvas

database - CMS 数据库设计 - 每个站点的主数据库或多数据库

mysql - 多个表中的相同外键